继承的主要作用在于,在已有的基础上继续进行功能的扩充。

1、继承的实现

使用extends关键字实现继承:class 子类 extends 父类

子类不仅可以直接继承父类的操作,实现代码重用,也可以进行功能的扩充,比如扩充属性和方法。

class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

class Student extends Person {
    private String school;

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }
}

public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("张三");
        student.setAge(21);
        student.setSchool("高新一中");
        System.out.println("姓名:" + student.getName() + ",年龄:" + student.getAge() + ",学校:" + student.getSchool());
    }
}

2、继承的限制

  • 子类对象在进行实例化之前,一定会首先实例化父类对象。默认调用父类的构造方法后再调用子类构造方法进行子类对象初始化。
class Person {
    public Person() {
        System.out.println("Person类对象产生");
    }
}

class Student extends Person {
    public Student() {
        super();    //此语句在无参时写与不写是一样的
        System.out.println("Student类对象产生");
    }
}

public class Test {
    public static void main(String[] args) {
        new Student();
    }
}

注意: 实际上在子类的构造方法中,相当于隐含了一个语句super()。同时需要注意,如果父类没有提供无参构造,那么这时就必须使用super()明确指出你要调用的父类构造方法。

  • Java只允许单继承,不允许多继承
    错误范例:class C extends A,B{ }
    可以采用多层继承实现上面的目的:
    class B extends A{ }class C extends B{ }

注意: 1)层数不建议太多,类的继承关系最多三层。
2)子类会继承父类所有的结构,包括私有属性,构造方法,普通方法,但是所有的非私有属性操作属于显示继承,可以直接调用,而所有的私有操作属于隐式继承,通过setter,getter方法调用。