DAY10 复习
1.接口的特点:
- 我们使用interface关键字定义接口
- 我们使用implements关键字建立接口实现类与接口的实现关系
接口是父级,接口实现类是子级 - 接口实现类如果实现部分/不实现接口中的抽象方法,那么实现类是一个抽象类
接口实现类如果实现了接口所有的抽象方法,那么这个实现类是一个普通类 - 抽象类与接口都不可以实例化/创建对象
- 接口没有构造函数,实现类使用的super()是父类的无参构造
如果没有明确指定父类,super()代表的才是Object的无参构造 - 接口中都是静态常量,没有成员变量,因为会默认拼接public static final
- 接口中都是抽象方法,默认会拼接public abstract
故此:静态常量与抽象方法默认拼接的部分,可以省略不写 - 接口不是类!!!
- 接口是用来制定规则的【有哪些功能?方法有参数吗?有返回值吗?】
方法具体的实现交给接口的实现类去完成
2.接口与类的复杂关系
1. 类与类的关系
继承关系,只支持单继承
比如A是父类,B是子类,B具备A的所有功能
如果B对A的功能不满意,可以重写(两同 两小 一大)
2. 类和接口的关系
实现关系,可以单实现,也可以多实现
比如:多实现:class A implements B,C{}
A是实现类,B和C是接口,A需要实现BC接口的所有抽象方法,否则A就是一个抽象类
3. 接口与接口的关系
继承关系,可以单继承,也可以多继承
interface A extends B,C{}
A B C 都是接口,A是子接口,具有B C父接口的所有功能(抽象方法)
class X implements A{}
X实现类需要实现A接口,以及A接口继承自B C接口的所有抽象方法,否则就是抽象类
class O extends A implements B,C{}
其中O是实现类,也是A的子类,同时拥有A的所有功能,并且需要实现BC的所有功能
4.接口与抽象类的区别
1.接口是一种用interface定义的类型
抽象类是一种用class定义的类型
2.接口中的方法都是抽象方法
抽象类中的方法不做限制
3.接口中的都是静态常量
抽象类中可以写普通的成员变量
4.接口中没有构造方法,不可以实例化
抽象类中有构造方法,但是也不可以实例化
5.接口是先天设计的结果,抽象是后天重构的结果
6.接口可以多继承,抽象类只能单继承
3.内部类总结
1.内部类创建对象的格式:
外部类名.内部类名 对象名 = 外部类对象.内部类对象
2.根据内部类的位置不同,分为:
成员内部类(类里方法外)
局部内部类(方法里)
3.内部类可以直接使用外部类的资源,但是外部类使用内部类资源时
需要先创建内部类的对象,通过内部类的对象来调用
4.如果内部类被private修饰,无法直接在外界创建内部类对象
我们可以创建外部类的对象,间接访问内部类的资源
5.如果内部类被static修饰,可以把这个类称为静态内部类
静态内部类不需要先创建外部类对象,而是先通过外部类的类名找到内部类,再创建内部类对象
6.如果静态内部类中有静态资源,可以不创建一个对象,就通过
外部类名.内部类名.静态资源名的链式加载的方式,使用这个资源
7.直接创建外部类对象,调用局部内部类所处的方法时,并不会触发局部内部类的功能
需要在局部内部类所处的方法中,先创建局部内部类对象,并调用其功能,功能才会被触发
8.匿名内部类没有名字,通常与匿名对象结合在一起使用
9.匿名对象只能使用一次,一次只能调用一个功能
匿名内部类其实就是充当了实现类的角色,去实现未实现的方法,只是没有名字而已
如果想要多次使用实现后的功能,还要创建之前的普通对象