继承
先说说继承的好处吧简单来说就是可以让多个类里重复的代码放在一个类里供其他类使用,不用在其他的类里重复写代码,方便修改代码
extands的意思是“扩展” 。子类是父类的扩展
不同的叫法:超类、父类、基类、子类、派生类一般叫父类和子类
使用继承
创建一个父类在父类里写公共的属性和方法
在创建一个子类
class Dog extends Pet {
//子类特有的属性和方法
}
在子类里用extends父类表示该子类继承父类,只在子类写出子类特有的属性和方法
注意!
不能直接访问private成员 被 继 承 的 父 类 成 员
子类不能直接访问private成员
子类与父类不在同包, 使用默认访问权限的成员
构造方法
super关键字
super是直接父类对象的引用。
可以通过super来访问父类中被子类覆盖的方法或属性。
子类访问父类成员就是super(name);注意必须在第一句
访问父类构造方法super();这是访问无参构造方法也可访问带参构造方法
访问父类属性 super.name;
访问父类方法 super.print();
super和this不能同时出现在构造方法中
super和this都不能再static方法中
方法重写
在子类中可以根据需要对从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称、参数列表和返回 类型。
重写方法不能使用比被重写方法更严格的访问权限
@override表示该方法时方法重写
构造方法不能被重写
方法重写的规则
– 方法名相同
– 参数列表相同
– 返回值类型相同或者是其子类;
– 访问权限不能严于父类
要注意重载和重写的区别
抽象类
Java中使用抽象类,限制实例化
public abstract class Pet {
}
abstract也可用于方法叫做抽象方法
抽象方法没有方法体
– 抽象方法必须在抽象类里
– 抽象方法必须在子类中被实现,除非子类是抽象类
final
Penguin类不希望再被其他类继承? – 使用final类 就是最终形态的类
方法不希望被重写? – 使用final方法 最终形态的方法
属性值不希望被修改 – 使用常量 最终属性值
使用final修饰引用型变量, 变量不可以再指向另外的对象
使用final修饰引用型变量,变量的值是固定不变的,
而变量所指向的对象的属性值是可变的