-
作用:代码复用
-
通过extends来实现继承
class A{}
class B extends A{}
-
超类(父类):内部属性和行为是所有派生类所共有的。
派生类(子类):派生类所特有的属性和行为 -
派生类继承超类后,派生类具有:超类的+派生类的属性和行为
-
一个超类可以具有多个派生类
一个派生类只能有一个超类---------单一继承 -
具有传递性(父传子,子传孙)
super()的用法:
-
super:指代当前对象的超类对象类似于this的用法
super的用法:- super.成员变量名------------访问超类的成员变量
- super.方法名()--------------调用超类的方法---------明天下午讲
- super()---------------------调用超类的构造方法
-
java规定:构造派生类之前必须先构造超类
在派生类的构造方法中若没有调用超类的构造方法
------则默认 super() 调用超类的无参构造方法注意:若超类中没有无参构造(比如自己添加了有参构造,就不再提供默认的无参构造),派生类中必须手动调用,否则会报错,因为默认提供的super()是调用超类的无参构造,而超类中没有,所以会报错
在派生类的构造方法中若调用了超类的构造方法
------则不再默认提供super()
super()调用超类构造方法必须位于派生类构造方法的第一行
//超类有无参构造函数时,派生类会默认调用超类的无参构造
class Aoo{
Aoo(){}//这个无参构造函数不写java默认提供,写了就不再提供
}
class Boo extends Aoo{
Boo(){//无参构造,java默认提供
super();//super()表示调用超类的无参构造函数,当超类有无参构造时,在派生类开头会自动调用,但不会显示。
}
}
//当超类内部没有无参构造时(自定义了有参构造),派生类不会自动调用超类的构造函数,需要手动添加
class Coo{
int age;
Coo(int age){
this.age = age;}
}
class Doo extends Coo{
Doo(){
super(1);//在派生类构造函数内部开头引用超类的构造函数。若不写这一句会报错
}
}