Java --接口--内部类分析
1. 实现接口 vs 继承类
接口和继承解决的问题不同:
继承的价值主要在于:解决代码的复用性和可维护性。
接口的价值主要在于:设计,设计号各种规范(方法),让其他类去实现这些方法。即更加的灵活
接口比继承更加灵活:
接口比继承更加灵活,继承是满足 is - a 的关系,而接口只需满足 like -a 的关系
接口在一定程度上实现代码解耦 【接口规范性+动态绑定】
接口的多态特性:多态参数 ,多态数组
2. 内部类:
介绍:一个类的内部又完整的嵌套了另一个类机构。被嵌套的类称为内部类,嵌套其他类的类称为外部类。是我们的第五大成员【属性,方法,构造器,代码块,内部类】,可以访问私有属性,并且可以体现类与类之间的包含关系。
语法:
class Outer{//外部类
class Inner {//内部类
}
}
class Other{}
局部内部类:
1. 局部内部类定义在方法中/代码块中
2. 作用域在方法体中或者代码块中
3. 本质仍然是一个类
4. 如果外部类和局部类的成员重名时,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问
匿名内部类!!!
介绍:匿名内部类是定义外部类的局部位置,比如方法中,并且没有类名
语法:
new 类或者接口(参数列表){
类体;
}
细节:
1. 可以直接访问外部类的所有成员,包含私有的
2. 不能添加访问修饰符,因为他的地位就是一个局部变量
3. 作用域:仅仅在定义它的方法或代码块中
4. 匿名内部类--访问-----> 外部类成员
5. 外部其他类不能访问匿名内部类
成员内部类:
1. 可以直接访问外部类的所有成员,包含私有的
2. 可以添加任意访问修饰符(public,protected,默认,privated),因为它的低位就是一个成员
3. 作用域和外部的其他类一样,为整个类体创建成员内部类对象,再调用方法
4. 外部类--访问-->外部类
静态内部类:
多了一个static
1. 可以直接访问外部类的所有静态成员
2. 可以添加任意访问修饰符,因为它的低位就是以个成员
3. 作用域:同其他的成员,为整个类体
5. 静态内部类 访问外部类 直接访问所有静态成员
6. 外部类访问静态内部类 访问方式:创建对象,再访问