一.继承
继承的概念:
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的分类:
继承分为单继承和多继承,单继承是一个子类最多只能有一个父类;多继承是一个子类可有两个以上的父类。
注意:Java的类只支持单继承,而接口支持多继承。
继承的一般格式:
pubic class 子类名 extends 父类名{
//关键词extends用来明确它所继承的父类
成员变量定义;
成员方法定义;
}
继承的原则:
1.子类无条件继承父类的无参构造方法。
2.子类如果没有定义构造方法,则会继承父类的无参构造方法;如果子类有自己的定义构造方法,则创造子类对象时,会先执行父类的无参构造,然后再执行自己的。
3.对于父类带参数的构造方法,子类需要使用super关键词来调用,并且调用语句必须是子类构造方法中的第一条执行语句。
public class Father {
public Father(){
System.out.println("父类的无参构造方法");
}
}
public class Son extends Father{//子类继承父类的无参构造方法
public Son(){
System.out.println("子类的无参构造方法");
}
public static void main(String[] args){
new Son();
}
}
/*
输出结果:
父类的无参构造方法
子类的无参构造方法
*/
二.关键词super
用处:
1.在子类中调用父类的构造方法
2.在子类中访问父类中的成员
注意:
1.子类继承父类,子类的构造方法的第一行,默认加上super()。
2.如果父类只有有参构造方法,那么子类继承父类时会报错。
3.如果子类第一行编写this(),那么super()会挤掉,导致无法调用父类构造方法。
public class Father {
int Age;
public Father(int age){
System.out.println("父类的有参构造方法");
}
public Father(){
System.out.println("父类的无参构造方法");
}
}
public class Son extends Father{
public Son(){
super(1);//调用父类的有参构造方法
System.out.println("子类的无参构造方法");
}
public static void main(String[] args){
new Son();
}
}
/*
运行结果:
父类的有参构造方法
子类的无参构造方法
*/