📜  继承 (1)

📅  最后修改于: 2023-12-03 15:11:41.748000             🧑  作者: Mango

继承

继承是面向对象编程中的一个重要概念。它是指创建一个新的类,从一个或多个现有类中继承属性和方法,从而实现代码的复用和简化。

继承的优点
  1. 代码重用:继承可以从基类中继承属性和方法,在新类中不用重新实现,减少了代码量,提高了代码的可维护性。
  2. 可扩展性:通过继承可以实现对基类的扩展,增加一个或多个新的属性或方法。
  3. 提高代码的可读性:继承的代码具有一定的可预测性,能够更好地理解代码的逻辑。
继承的实现方式

在面向对象编程中,继承可以通过两种方式实现:类继承和接口继承。

类继承

类继承是将一个类作为基类,新建一个派生类,并将基类的属性和方法传递给派生类,使它具有基类的特性。派生类可以进一步添加属性和方法以满足自身需求。

在Java中,类继承使用关键字extends来实现,如下所示:

class Person {
    private String name;
    private int age;
  
    public void setName(String name) {
        this.name = name;
    }

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

    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

class Student extends Person {
    private int score;

    public void setScore(int score) {
        this.score = score;
    }

    public int getScore() {
        return this.score;
    }
}

public class Main {
    public static void main(String args[]) {
        Student student = new Student();
        student.setName("张三");
        student.setAge(18);
        student.setScore(100);
        System.out.println(student.getName() + ",年龄:" + student.getAge() + ",成绩:" + student.getScore());
    }
}

在上面的例子中,我们定义了Person类作为基类,它有name和age两个属性和对应的get、set方法。另外,我们定义了一个Student类作为派生类,它从Person类继承过来name和age两个属性和对应的get、set方法,并添加了score属性和对应的get、set方法。

接口继承

接口继承是将一个接口作为基础,从中派生出新接口,并向其中添加新的方法或属性。

在Java中,接口继承使用关键字extends来实现,如下所示:

interface IPerson {
    void setName(String name);
    String getName();
}

interface IStudent extends IPerson {
    void setScore(int score);
    int getScore();
}

class Student implements IStudent {
    private String name;
    private int score;

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

    public void setScore(int score) {
        this.score = score;
    }

    public String getName() {
        return this.name;
    }

    public int getScore() {
        return this.score;
    }
}

public class Main {
    public static void main(String args[]) {
        Student student = new Student();
        student.setName("张三");
        student.setScore(100);
        System.out.println(student.getName() + ",成绩:" + student.getScore());
    }
}

在这里,我们定义了IPerson接口作为基接口,它有一个方法setName和一个方法getName。另外,我们定义了IStudent接口作为派生接口,它继承了IPerson接口,并添加了一个方法setScore和一个方法getScore。

继承时,Student类实现了IStudent接口,并继承了IPerson接口中的setName和getName方法,同时也实现了IStudent接口中的setScore和getScore方法。