1.继承
Java用关键字extends表示继承。关键字 extends 表明正在构造的新类派生于一个已存在的类。已存在的类称为超类(superclass),新类称为子类(subclass)。超类和子类是 Java 程序员最常用的两个术语。在设计类的时候,应该将通用的方法放在超类中, 而将具有特殊用途的方法放在子类中。
继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,实现代码复用。
1.2 继承的语法
JAVA如果要表示继承间的关系要用extends关键字
修饰符 class 子类 extends 父类 {
}
继承要点
1、子类拥有父类非private的属性和方法。
2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法
super关键字
由于各种原因,父类与子类中可能出现相同名称的代码,但在这时子类是无法直接访问的,所以有了super关键字,它的作用是在子类方法中访问父类方法中的成员
注: 1. 只能在非静态方法中使用 2. 在子类方法中,访问父类的成员变量和方法。
super关键字和this关键字的区别
相同点:1. 都是Java中的关键字
2. 只能在类的非静态方法中使用,用来访问非静态成员方法和字段
3. 在构造方法中调用时,都必须是构造方法中的首条语句,并且不能同时存
不同点:1.this是对当前对象的引用,即调用实例方法的对象;super相当于子类对象对父类从父类那继承的对象的引用。
2.在非静态成员方法中,this用来访问自己本类的方法和属性,super用来访问从父类继承的方法和属性
3.在构造方法中this用来调用本类的构造方法,super用来调用父类构造方法,两个调用不能同时出现
4.构造方法中一定会存在**super(…)的调用,用户没有写编译器也会增加,但是this(…)**用户不写则没有
JAVA中不支持多继承。
1.多态
定义: 多态是同一个行为具有多个不同表现形式或形态的能力。多态是建立在继承的基础上的,一个父类对象可以产生多个不同的子类对象,根据这些子类对象的不同可以具备不同的方法,也就是说表现出了不同的形态即多态
2.必要条件
(1)多态必须继承父类
(2必须有重写
(3)必须由父类引用指向子类
3.重写
重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
规则:1.子类在重写父类的方法时,一般必须与父类方法原型一致: 返回值类型 方法名 (参数列表) 要完全一致 2.被重写的方法返回值类型可以不同,但是必须是具有父子关系的 3.访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方法就不能声明为 protected 4.父类被static、private修饰的方法、构造方法都不能被重写。
注: 可以使用 @Override 注解来显式指定
重载和重写的区别 :重写不能修改参数列表;重写不能修改返回类型(构成父类与子类关系除外);重写不能对访问限定符做更严格的限定,但可以降低; 重载全部与之相反,重载必须修改参数列表,可以修改返回类型和访问限定符。
3.1 向上转型
向上转型:实际就是创建一个子类对象,将其当成父类对象来使用。
语法格式:父类类型 对象名 = new 子类类型()
向上转型的优点:让代码实现更简单灵活。
向上转型的缺陷:不能调用到子类特有的方法
3.2向下转型
将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的
方法,此时:将父类引用再还原为子类对象即可,即向下转换。
4.多态的优缺点
优点:
1. 能够降低代码的 “圈复杂度”, 避免使用大量的 if - else
2.可扩展能力更强
缺点
多态缺陷:代码的运行效率降低