第十一天-Java继承/多态特性-方法重写/抽象类/适配器/对象运行时的多态/
java不支持多继承,可以通过接口实现。
继承后可以调用被继承类里的方法
继承中父类资源的限制
缺省修饰符修饰的方法在子类继承后,只能在同一个包内访问。
保护修饰符修饰的方法可以在子类中去访问,加一个this.就是此对象的意思。
上转型对象
final修饰的类继承,考虑安全因素,有些东西涉及到jvm内部的内存管理的方法,防止被继承后修改出现问题。还一个就是不想被继承,去重写类里面的东西。
方法重写
方法重写和方法重载都属于java中的多态。
方法重写访问修饰符的级别不能低于父类同名方法的访问级别,可以持平,可以高于它。
在重写的方法上使用@Override则是注释以下方法是重写的方法。
上图,用ani2的父类对象调用的是父类方法,如果用mamm调用或者用ani调用都是重写后的方法,因为ani创建对象的实例类型还是Mammal的。
eclipse快速方法重写
上面这种不是重写,因为是static修饰的,这种叫覆盖。static修饰的方法不能重写。
final修饰的方法不能重写。
static静态方法不能使用super关键字。
先有父类构造器后有子类构造器。
super();必须在子类构造器的第一行。
方法使用this调用自己会内存溢出无限循环,特殊算法用,称之为递归。
静态方法中不能出现this和super
super调用父类的属性。
eclipse快速创建继承其他类的方法
java核心编程思想是面向对象,面向对象核心编程思想是面向抽象。
定义抽象类
抽象类父类
抽象继承类
继承抽象子类
继承类如果和抽象父类抽象继承子类不在一个包里,需要引入import 抽象父类和抽象继承子类的位置和类名。
如果两个抽象类继承和多个继承抽象子类,这些继承抽象子类每一个必须都把父抽象类和抽象继承子类里的的所有抽象方法全部实现方法重写才能 运行。
如果继承抽象类里建立了父抽象类的实例方法,那继承抽象子类里的父类的抽象方法可以不写了。
适配器
适配器继承最后一个继承的抽象类,为继承所有抽象父类的空方法实现的普通类,这样其他的普通子类继承抽象类的时候就不用了把所有方法全实现了,而是用哪个重写哪个。
继承的抽象类的类名加上Adaptor则是表示这个类是一个适配器类。
适配器提供了父类抽象方法的方法空实现。
有了适配器,子类继承适配器就可以用哪个方法再重写哪个方法了。
一个父类创建一个抽象方法,之后子类继承父类进行实例方法重写,之后调用父类抽象方法,调用方法里面的参数改成不同的子类则输出方法重写后的结果。
本文地址:https://blog.csdn.net/niubo516/article/details/107331873