1.接口的多实现
①子类进行多接口实现时,如果接口常量没有重名,可以按照之前的方式进行使用,如果接口常量出现重名,就必须通过接口名来调用常量
②子类进行多接口实现时,接口中有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一次
③子类进行多接口实现时,接口中存在同名的静态方法并不会冲突,因为只能通过各自接口名访问静态方法
④接口中有多个默认方法时,实现类都可以选择继承使用。如果默认方法有重名的,必须重写一次
⑤当一个类既继承一个父类,又实现若干接口时,父类的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。
2.接口比较器
当我们使用自定义类型数组进行排序时,会发现报出ClassCaseException异常,原因是自定义数据类型不知道如何比较大小
在JDK中,内置了两种方式可供我们进行大小的比较(支持任意数据类型)
①comparable(内置比较器)
在原类的基础上实现comparable接口,会修改原类
具体:1.重写compareTo方法
2.实现implements comparable<User>
Arrays.sort(users);
②comparator(外置比较器)
新建一个比较器类,实现comparator接口,不会改变原类
具体:1.重写compare方法
2.新建一个类,实现implements comparator<User>
Arrays.sort(users,new MyComparator());
3.模板设计模式
定义一个操作中的算法骨架,将通用步骤以模板形式封装在父类模板中,将具体细节步骤延迟到子类中实现。
案例:将物品放入冰箱,需要几步
①打开冰箱 ②将物品放入 ③关上冰箱
4.多态
多态是面向对象三大特征之一
4.1多态是指同一行为,不同的事物具有多个不同表现形式。
例如:猫的移动和蛇的移动是不一样的
4.2多态的分类
①编译时多态:重载
②运行时多态:在运行时,同一行为,可以有不同的表现形态
4.3运行时多态
要有的条件:①重写
②父类引用指向子类对象(向上转型)
例:父类数据类型 变量名 = new 子类数据类型();
③继承
4.4多态的好处
使用多态可以使程序具有更好的扩展性
4.5多态时成员属性的特征
1.成员变量:编译时看左边(父类),运行时看左边(父类)
2.实例方法:编译时看左边(父类),运行时看右边(子类)
3.静态方法:编译时看左边(父类),运行时看左边(父类)