多态
- 多态,指的是【对象】的不同形态,把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程
成员变量,编译看左边,运行看左边 - 成员方法,编译看左边,运行看右边【只限于重写方法,在多态中】
- 若要访问子类特有的,要向下转型。
接口
接口是指多个类的公共规范 - 是引用类型
- 接口:就是我可以获取接口这个功能,抽象类是我可以继承类中的所有
- 接口是一个功能,不是一个类,抽象类是一个类
- 接口中有:1.抽象方法2.变量
- 1.8:3.默认方法,4.静态方法
- 1.9:私有方法*/
抽象方法都是public 和 abstract,并且可以省略*/
接口变量默认public static final,有final必须赋值
/*接口中没有静态代码块以及构造方法,抽象类有,但是不能new,只能被子类继承 - 接口可以有多个,继承的父类只能有一个
- 实现多个接口,若接口中方法重复,则只实现其中一个方法
- 若实现类没有全部实现接口中的抽象方法,那么这个实现类必须是抽象类
- 若多个接口类中默认方法重复了,则在实现类中要重写,没带default
- 若接口类与父类方法重复了,则优先父类的方法*/
/*接口之间也可以继承,而且是多继承
- 若出现2个父类接口默认方法相同,那么要重写,且要带着default关键字,上面的就没带*/
接口,抽象类,继承,多态 的好处 - 1.继承:子类少写了代码(公共代码抽取出来写成父类,子类去继承)
- 继承是多态的前提。
- 2.多态:通用了代码,屏蔽了子类对象不同状态(左边都一样)
- 3.抽象类:就是具备抽象方法的父类(就是一个父类,只不过里面有的方法是抽象方法,作用和【继承】中的父类一样,抽象方法为子类提供了方法名)
- 4.接口:(1)给【功能】提供了一个规范,领导让a去实现某一功能,再让b实现某一功能,希望他们最后实现的都是根据一定规范的
(2)扩展性,不需要修改类其他部分,只需要实现接口类来添加接口功能。
接口和抽象类宏观区别
我们会感觉接口和抽象类的子类和实现类都是继承或实现(当然接口实现类只能实现,接口中1.8之前只有抽象方法),我们会感觉貌似没什么不同,实则,抽象类是指父类,子类是继承了它,接口是指一个功能,比如老师会教学,在逻辑上要说得通。
所以,区别在逻辑上以及一些小的定义,比如成变,是否有方法体有有区别。
从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。
接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。
接口的成员只能是 public 的,而抽象类的成员可以有多种访问权限。