一、继承的特点
1、Java的继承通过关键字extends来实现
2、Java继承具有单继承的特点,每一个子类只有一个直接父类
3、Java里子类继承父类的语法格式如下:
//SubClass子类 SuperClass父类
修饰符 class SubClass extends SuperClass{
//类定义的部分
}
3、Java的子类不能获得父类的构造器
4、如果定义一个Java类时,并未显示指定这个类的直接父类,则这个类默认扩展java.lang.Object类。因此,java.lang.Object类是所有类的父类,要么是其直接父类,要么是其间接父类。所以,所有的java对象都可以调用java.lang.Object类所定义的实例方法。
二、重写父类的方法
class Bird {
public int b=1;
public void fly(){
System.out.println("我在天空里自由自在的飞翔");
}
}
这个类阔扩展了Bird,重写了Bird类的fly()方法
public class Ostrich extends Bird {
//重写Bird类的fly()方法
public void fly(){
super.fly();
System.out.println("我只能在地方跑");
}
public void a(){
int b=3;
System.out.println(super.b);
}
public static void main(String[] args){
Ostrich os = new Ostrich();
os.fly();
os.a();
}
#这种子类包含父类的同名方法的现象被称为父类的重写(Override),也被称为方法覆盖
1、遵循:两同两校一大
”两同“:方法名相同、形参列表相同
”两小“:子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出异常类型应比父类方法生命抛出异常更小或相等
”一大”子类方法的访问权限应比父类方法的访问权限更大或相等
2、覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能是一个类方法,一个实例方法。
3、如果父类方法具有private访问权限,则该方法对其子类是隐藏的,因此其子类无法访问该方法,也就是无法重写该方法。
三、super限定
1、super用于限定该对象调用它从父类继承得到的示例变量或方法
正如this不能出现在static修饰方法一样中一样,super不能出现在static修饰的方法中
static修饰的方法属于类,该方法的调用者可能是一个类,而不是对象,因而super限定也就失去了意义
四、调用父类构造器
1、在一个构造器中,调用另一个重载构造器使用this调用来完成,在子类狗走起中调用父类构造器用super完成
2、this调用的是同一个类中重载的构造器
3、使用super调用父类构造器也必须出现在子类构造器执行体的第一行