认识多态
多态:同一个引用类型,使用不同的实例而执行不同操作。
频繁修改代码,代码可扩展性、可维护性差,用多态优化。
方法重写是实现多态的基础。
多态意味着在一次方法调用中根据包含的对象的实际类型来决定应该调用哪个方法,而不是由用来存储对象引用的变量的类型决定的。当调用一个方法时,为了实现多态的操作,这个方法既是在父类中声明过的,也必须是在子类中重写过的方法。
抽象类不能被实例化。
子类如果不是抽象类,则必须重写抽象类中的全部抽象方法。
abstract修饰符不能和final修饰符一起使用。
abstract修饰的抽象方法没有方法体。
private关键字不能用来修饰抽象方法。
向上转型
语法:
<父类型><引用变量名>=new<子类型>();
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。
此时通过父类引用变量无法调用子类特有的方法。
向下转型
语法:
<子类型><引用变量名>=(<子类型>)<父类型的引用变量>;
在向下转型的过程中,如果没有转换为真实子类类型,会出现类型转换异常。
instanceof
使用instanceof时,对象的类型必须和instanceof后面的参数所指定的类在继承上有上下级关系。
多态的应用
多态的优点:
可替换性:多态对已存在的代码具有可替代性。
可扩充性:增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。
接口性:多态是父类向子类提供了一个共同接口,由子类来具体实现。
灵活性:多态在应用中体现了灵活多样的操作,提高了使用效率。
简化性:多态简化了应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
在Java中实现和使用多态的主要方式有以下两种主要的应用形式
1,使用父类作为方法的形参
2,使用父类作为方法的返回值