什么是继承
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。多个类可以称为子类,单独这个类称为父类、超类或者基类。子类可以直接访问父类中的非私有的属性和行为。
通过 extends 关键字让类与类之间产生继承关系。
super和this
super是一个关键字,代表父类的存储空间标识。(可以理解为父亲的引用)
使用场景
- 当子父类出现同名成员时,可以用super进行区分
- 子类要调用父类构造函数时,可以使用super语句
this代表对象的引用(谁调用就代表谁)。
使用场景
- 引用隐式参数
- 调用该类的其他构造器,可以在参数少的构造器中调用参数多的构造器
重写和重载
重写规则
方法重写是存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数表(即相同的方法签名)(注意:java 5.0版本以后返回值类型可以为原类型的子类型)
(1)子类中不能重写父类中的final方法
(2)子类中必须重写父类中的abstract方法
(3)父类私有方法,子类看不到,因此父类私有方法的重写也就无从谈起
(4)覆盖时,子类方法权限一定要大于等于父类方法权限
(5)静态只能覆盖静态
重载规则 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
继承之后的执行顺序
父类静态代码块→子类静态代码块→父类构造代码块→父类构造方法→子类构造代码块→子类构造方法
final关键字
final是一个关键字,可以用于修饰类,成员变量,成员方法。
特点:
(1)它修饰的类不能被继承。
(2)它修饰的成员变量是一个常量。
(3)它修饰的成员方法是不能被子类重写的。