在看框架源码的时候,时常可以看到内部类,为什么不单独做成一个类,达到解耦的目的,而要做为内部类呢?
因为Java内部类有以下四大作用:
1.内部类可以使用private和protected修饰,达到安全、隐藏的目的
2.内部类可以访问外部类所有字段;
3.可以间接实现多重继承,而不会有C++的危害;
4.可以避免 实现的接口和扩展的类中有同名方法 的区分问题。
符合以上作用之一,即可使用
下面分别举例来深入了解
1 可以使用private和protected修饰
平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以:
接口:
public interface InnerInterface {
void innerMethod();
}
具体类
/**
* 实现信息隐藏
*/
public class OuterClass {
public InnerInterface getInner() {
return new InnerClass();
}
/**
* private修饰内部类,实现信息隐藏
*/
private class InnerClass implements InnerInterface {
@Override
public void innerMethod() {
System.out.println("实现内部类隐藏");
}
}
}
调用程序
public class Test {
public static void main(String[] args) {
// InnerInterface innerClass = new InnerClass();报错
new OuterClass().outerClass.getInner().innerMethod(