MENU

面向对象第二特征继承

• November 14, 2020 • 面向对象编程

面向对象第二特征继承

例:
定义下面两个类:人类、学生类
传统结构:

/**人类*/
class Person{
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = 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{
    private String name;
    private int age;
    private String school;
    public Student(String name, int age, String school) {
        this.name = name;
        this.age = age;
        this.school = school;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    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;
    }
}

使用继承:学生也是人,因此学生类继承人类,但是学生还有学校,所以会新加属性。人类是一个广泛的定义范畴、学生类是一个相对狭窄的定义范畴。也就是说,人类有的属性(name, age),学生类都有,而且学生类还有其他的属性
如何继承? ——extends关键字

class 子类 extends 父类{
}

通常将子类称为派生类,父类称为超类

如果子类中不定义任何的成员属性和方法,那么就等同于父类

继承的目的在于 子类可以重用父类中的结构、也可以扩充新的属性或者方法

/**学生类*/
class Student extends Person{
    private String school;
    public Student(String name, int age, String school) {
        super(name, age);         //必须写在第一行
        this.school = school;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
}
 

利用继承节省了代码量


注意:在进行子类实例化对象的时候一定要首先实例化父类对象
在实例化子类对象的同时,一定会产生父类实例化对象,目的是为了所有的属性都有空间分配

继承相关限制

java中不允许多重继承、只允许多层继承

什么叫多重继承?

什么是多层继承?

在进行继承关系定义的时候,实际上子类可以继承父类中的所有的操作结构。但是对于私有操作属于隐式继承,而所有非私有操作属于显式继承


代码编译器:IntelliJ IDEA 2020.02

Archives QR Code Tip
QR Code for this page
Tipping QR Code