语法
修饰符 子类 extends 父类{
//类定义部分
}
继承是面向对象的三大特特之一,Java只支持单继承。继承表达 is a 的关系。
子类可以从父类继承到哪些财产?
- 继承public和protected修饰的属性和方法,无论两者是否位于同一个包当找中.
- 继承默认权限修饰符的属性和方法,必须同包
- 无法继承private修饰的属性和方法.
- 无法继承父类的构造函数.
在Java中访问修饰符的访问权限
访问修饰符 | 本地 | 同包 | 子类 | 其他 |
Private |
|
|
| |
默认 |
|
| ||
Protected |
| |||
Public |
重写和继承关系中的构造函数
子类重写父类方法
定义
如果从父类继承的方法不能满足子类的需求,则在子类中可以对父类的同名方法进行重 写 (覆盖),以符合要求,称为重写
方法重写的要求
- 重写方法和被重写方法必须具有相同的方法名
- 重写方法和被重写方法必须具有相同的参数列表
- 重写方法和被重写方法必须返回值类型必须相同,或者是其子类
- 重写方法不能缩小被重写方法的访问权限
- Super代表对当前对象的直接父类对象的默认引用
- Super必须出现再子类(子类的方法或构造函数)中,而不是其他位置
- 可以访问父类成员(可被继承的)
- 访问父类构造函数必须在子类构造函数的第一条语句
- 子类没有通过super显示调用父类的有参构造函数,也没有通过this显示调用自身的其他构造函数,则系统默认先调用父类的无参构造函数。
- 子类构造方法中没有使用super显示调用父类的有参构造函数,则执行父类相应的构造方法,不执行父类的无参构造方法
- 子类的构造方法中通过this显示调用自身的构造函数,则在相应的构造方法中应用以上两条规则
- 存在多级继承关系,在创建子类对象时,以上规则会多次向更高一次父类应用。一直到执行顶级父类object类的无参构造函数为止
- 通过abstract关键字修饰
- 抽象类不能被实例化。抽象类可以没有、有一个、多个或者全部都是抽象方法
- 抽象方法没有方法体,只有方法声明。抽象方法必须被子类继承,否则该子类也为抽象类
- 用fianl修饰类,该类不能被继承
- 用fianl修饰方法,该方法不能被重写
- 用fianl修饰变量(成员或者局部变量)都称为常量,只能赋值一次
Super关键字
继承条件下构造方法被调用的规则
抽象类
抽象类和抽象方法
抽象类和抽象方法的特点
Fianl修饰符
例:
Final Dog dog = new Dog(“偶偶”);
dog.name = “美美”;
dog = new Dog(“丫丫”);
错误点:
dog = new Dog(“丫丫”); -------被final修饰的对象不能重新赋值,等于修改了引用的内存地址.