第二章 继承
继承的关键字
extends
概念:面向对象编程允许类去继承其他类中常用的状态和行为。
关系:每个类都允许有一个直接的父类,但每个父类可以拥有不限量的子类
重写和继承关系中的构造方法
重写
注意:必须保证父子类之间的方法名称、参数列表相同
概念
在子类中可以根据需求对从父类继承的方法进行重新编写,称为方法的重写或方法的覆盖
要求
-
重写的方法和被重写方法必须具有相同的方法名
-
重写方法和被重写方法必须具有相同的参数列表
-
重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类
-
重写方法不能缩小被重写方法的访问权限
访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
区别(重载与重写的区别)
- 重载涉及的同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值、访问修饰符无关
- 重写涉及的是子类和父类之间的同名方法,要求方法名相同、参数列表相同、返回值类型相同,并且要求访问修饰符子类不能大于他的父类
super关键字
概念
super代表对当前对象的直接父类对象的默认引用
作用
- super必须出现在子类(子类的方法和构造中),而不是其他位置
- 可以访问父类的成员
要求
无参数的构造方法
- 当子类的构造方法内的第一行没有出现"super"时,系统会默认的加上无参数的方法
- 在一个构造方法中不允许同时出现this和super语句调用构造方法
- 无论子类构造方法有没有"this()"和"super()"方法,实例化子类对象一定会执行父类的构造方法
区别(super&&this)
- this和super一样,都是对象内部的引用变量,只能出现在对象内部
- this指向当前对象自己,super指向当前对象的父类型特征
- this东西多于super,可以这么来说this包含super
- this()和super()都只能出现在构造方法的第一行
- this()和super()不可以共存
- 如果构造方法中第一行没有this方法也没有super()方法时,他会自动默认执行super方法
- this()是构造方法中调用本类其他的构造方法,super()时当前对象构造方法中调用自己父类的构造方法
抽象类和抽象方法
关键字
abstract
概念
抽象类:普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。
抽象方法:抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。
下面一个代码了解
//抽象类
public abstract class Pet{}
//抽象方法
public abstract void println();
final修饰符
- 修饰类,不能被继承
- 修饰属性,为常量,只能赋值一次,常量名所有字母大写
- 修饰的方法不能被子类重写
- 可以修饰属性和方法,但不能修饰类和构造方法