一、面向对象的多态性 多态定义: 1.多态性是指“多种形式”,“一个对外接口,多个内在实现方法”。 2.当系统A访问系统B的服务时,系统B可以通过多种实现方式来提供服务,而这一切对系统A是透明的。运用了动态绑定机制。 3.父类的某个方法被其子类重写时,可以产生自己的行为。 4.一个对象变量可以指向多种实际类型的现象;发送消息给某个对象,让该对象自行决定响应何种行为。
作用:实现接口和实现分离,有利于扩展和维护 二、对象的类型转换
1.子类对象可以自动转换成父类 2.父类转换成子类必须使用强制转换(可编译,不可运行 3.instanceof操作符:判断一个类是否实现了某个接口,也可以用来判断一个实例对象是否属于一个类。作用是测试它左边的兑现是否是它右边的类的实例
三、方法的重载Overload 如果类的方法(包括从父类中继承的方法),同时存在一个以上的同名成员方法,只要它们的参数列表(数据类型,个数,顺序)不同,即一个方法是另一个方法的重载方法
四、方法的重写Overrite,也叫覆盖 ①如果子类的方法与父类中被子类访问(继承)的方法具有相同的方法名称、参数列表和返回类型,即子类的方法重写了父类的方法 总结 如果子类方法重写了父类的方法那么必须保持方法名称、参数列表、返回类型必须一致 ②如果在子类中想调用父类中的那个被覆盖的方法,我们可以用super方法的格式。 ③覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限,父类方法用public子类次方法不能用private ④父类的非静态方法不能被子类重写为静态方法 ⑤父类的静态方法不能被子类重写为非静态方法; ⑥子类隐藏了父类的静态方法,不能重写父类的静态方法 隐藏的区别:JVM把静态方法和所属的类绑定,实例方法和所属的实例绑定 ⑦父类的私有方法不能被子类重写继承 五、抽象类与接口专题 Java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己情况取实现,这样方法就是抽象方法,它含抽象方法的类就叫抽象类。
abstract ①由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类 ②抽象方法必须声明在 抽象类中 ③抽象方法语法: abstract type method_name(parameter_list); abstract 返回值类型 抽象方法(参数列表); ④声明抽象类语法:abstract class{} ⑤使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节 父类的抽象方法可以被子类重写
如何理解多态 1.定义 2.作用 实现接口和实现分离,有利于扩展和维护 3.原理 类的类型转换一致,JVM的动态绑定一致,运用这种机制,可以提高系统的松耦合性 4.实现方式 重写,重载 5.案例 重写的十二条规则 1 子类从夫类继承的方法 2 具有相同的方法名称 3 参数列表相同 4 返回值类型一致 5 不能降低继承发放的访问权限 6 父类的静态方法不能被子类重写为非静态方法 7 父类的非静态方法不能被子类重写为静态方法 8 子类隐藏了父类的静态方法,不能重写父类的静态方法 9 JVM把静态的方法和所属的类绑定,把实例对象和所属的实例绑定 10 父类的私有方法不能被子类重写 11 父类的非抽象方法可以被子类重写为向后想方法 12 父类的抽象方法可以被子类重写为非抽象方法或是抽象方法
案例如下: