接口里面嵌套类的使用

我还是第一次这样用,呵呵,一直不知道这样也行,有点孤陋寡闻了。还得加强学习啊!
  1. /**
  2.  * 接口里面嵌套类的使用。
  3.  * 
  4.  * @author 赵学庆 java2000.net
  5.  */
  6. public class T {
  7.   public static void main(String[] args) {
  8.     T1 t1 = new T1();
  9.     t1.test();
  10.     T2 t2 = new T2();
  11.     t2.test();
  12.   }
  13. }
  14. class T1 implements MyFace {
  15.   public void test() {
  16.     testOutter();
  17.     // 继承类则简化了路径
  18.     MyTestInner ttt = new MyTestInner();
  19.     ttt.testInner();
  20.   }
  21.   public void testOutter() {
  22.     System.out.println("testOutter");
  23.   }
  24. }
  25. class T2 {
  26.   public void test() {
  27.     // 完整路径直接使用
  28.     MyFace.MyTestInner ttt = new MyFace.MyTestInner();
  29.     ttt.testInner();
  30.   }
  31. }
  32. interface MyFace {
  33.   public void testOutter();
  34.   // 嵌套类
  35.   public class MyTestInner {
  36.     public void testInner() {
  37.       System.out.println("testInner");
  38.     }
  39.   }
  40. }
运行结果
testOutter
testInner
testInner


总结:

感觉就像一个带了package的类一样,唯一的区别就是实现类可以直接使用,还是方便了很多。
### 如何从外部类调用嵌套类的成员函数 在 C++ 和 Python 中,处理嵌套类的方式有所不同。以下是两种语言中实现这一功能的具体方式。 #### 在 C++ 中 对于 C++ 的情况,由于嵌套类本身是一个独立于外部类的对象实体,因此需要先创建嵌套类的一个实例,然后再通过该实例调用其成员函数。需要注意的是,虽然嵌套类能够访问外部类的私有静态成员[^1],但这并不意味着可以直接通过外部类自动获取到嵌套类的功能接口。具体操作如下: ```cpp #include <iostream> using namespace std; class Outer { private: static void privateStaticFunction() { cout << "Private Static Function Called." << endl; } public: class Inner { public: void callOuterPrivateStaticFunction() { privateStaticFunction(); // 嵌套类可访问外部类的私有静态成员 } }; }; int main() { Outer::Inner innerInstance; innerInstance.callOuterPrivateStaticFunction(); return 0; } ``` 上述代码展示了如何在外层作用域下创建 `Inner` 类的实例并通过它调用其中的方法。值得注意的是,这里并没有涉及任何对外部类非静态成员的操作,因为这通常需要特定的外部类对象作为上下文支持。 #### 在 Python 中 Python 对象模型更加灵活,允许动态绑定以及更自由地操纵类和其实例之间的关系。如果希望从外部类调用嵌套类的方法,一种常见做法是在外部类初始化过程中创建嵌套类的实例,并将其存储为外部类的一部分属性或者返回给使用者。下面给出一个例子说明这种机制: ```python class Outer: def __init__(self, value): self.value = value self.inner_instance = self.Inner(self) class Inner: def __init__(self, outer_self): self.outer_self = outer_self def access_outer_value(self): print(f'Accessing outer value: {self.outer_self.value}') # 使用场景 outer_obj = Outer('Sample Value') outer_obj.inner_instance.access_outer_value() ``` 在这个案例里,当构建一个新的 `Outer` 实例时,会同时生成一个对应的 `Inner` 实例并与之关联起来。这样做的好处在于可以让内部类轻松引用外部类的数据结构或行为逻辑[^3]。 另外还有一种变体形式就是利用闭包特性让内部类捕获外部环境的信息从而间接达到相同效果[^4]。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值