《Java入门第二季》第四章 多态
Java 中的多态
1、引用的多态:意思就是父类的句柄既可以持有本类的对象,也可以持有子类的对象。
2、方法的多态:注意点是当父类句柄持有子类对象的时候,无法调用子类特有的方法。
多态中的引用类型转换
1、重写override的时候有个典型的向下转换,并且在转换之前执行了检查。
2、检查向下转换安全性的另一个方法:父对象 instanceof 子类。
Java 中的抽象类
1、通常用接口取代抽象类:a)两者都可以作为子类对象的持有者。b)两者都可以约定子类必须实现的方法。c)实现接口相比继承抽象类复杂度更低。
2、接口和抽象类的差异在于:抽象只能单继承,而一个类可以实现多个接口。
Java 中的接口
1、接口规定了一批类所需要遵守的规范,规定类里必须提供某些方法。
2、接口中的属性都是常量,即使定义时不显示设置public static final,系统也会自动加上。(并且不加是一种比较好的习惯,不做多余的事情。)
3、接口中的方法都是抽象方法,遵守一个接口就必须实现接口中的方法。
4、使用接口:类实现接口、作为对象持有者、与匿名内部类配合使用。
5、接口的命名规范:要与类区分,通常I开头或者InterfaceXX
ps:参考阿里的开发手册,接口规范Xxx配合XxxImpl,方法直接void f()而不要加上public abstract等前缀,接口常量也是一样,不要加多余的前缀。
匿名内部类(经常与接口配合使用)
/** * Created by xkfx on 2017/3/11. */ public class TestAnimal { public static void main(String[] args) { // 使用匿名内部类的第一种方式 Animal a1 = new Animal() { @Override public void run() { System.out.println("使用匿名内部类的第一种方式"); } }; a1.run(); // 使用匿名内部类的第二种方式 new Animal() { @Override public void run() { System.out.println("使用匿名内部类的第二种方式"); } }.run(); } }
/** * ┏┓ ┏┓ * ┏┛┻━━━┛┻┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ┃ * ┃... ⌒ ... ┃ * ┃ ┃ * ┗━┓ ┏━┛ * ┃ ┃ Code is far away from bug with the animal protecting * ┃ ┃ 神兽保佑,代码无bug * ┃ ┃ * ┃ ┃ * ┃ ┃ * ┃ ┃ * ┃ ┗━━━┓ * ┃ ┣┓ * ┃ ┏┛ * ┗┓┓┏━┳┓┏┛ * ┃┫┫ ┃┫┫ * ┗┻┛ ┗┻┛ */
UML 简介(用的并不多)
1、用例图:表达用户需求。
2、序列图:对象间的交互关系。
3、类图:最常用。