内部类的实现的接口
package sky.java.innerclass1.inner1;
public interface Ainter {
void hello();
}
package sky.java.innerclass1.inner1;
public interface Binter {
void say();
}
内部类的外部类
package sky.java.innerclass1.inner1;
public class Ha {
private class AChild implements Ainter {
@Override
public void hello() {
System.out.println("hello");
}
}
AChild aChild() {
return new AChild();
}
private class BChild implements Binter {
@Override
public void say() {
System.out.println("say");
}
}
BChild bChild() {
return new BChild();
}
}
调用测试
package sky.java.innerclass1.inner1;
import java.math.BigInteger;
public class Demo {
public static void main(String[] args) {
Ha ha = new Ha();
Ainter ainter = ha.aChild();
Binter binter = ha.bChild();
ainter.hello();
binter.say();
}
}
总结 :
1. 通过在类的内部 , 使用其接口实现 , 处理真正逻辑 , 并将其私有.
2. 并将该对象以接口的形式返回供其他应用使用.
3. 可对外隐藏其内部实现
4. 返回结果进行功能操作 , 更易于扩展与解耦
5. 非私有内部类其实就是一个普通java类 , 可以直接创建使用
package sky.java.innerclass1;
public class Outer {
public void f() {
System.out.println("f....");
}
public class Inner {
public Outer outer() {
return Outer.this;
}
}
public Inner inner() {
return new Inner();
}
/**
* 总结: 通过外部类创建内部类对象 , 格式为 : Outer.Inner inner1 = outer.new Inner();
* 通过内部类 , 获取外部类对象 , 格式为 : Outer.this;
*/
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.inner();
inner.outer().f();
// 获取内部对象实例
Outer.Inner inner1 = outer.new Inner();
}
}