📜  Java中的继承(1)

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

Java中的继承

Java中的继承是指子类(派生类)继承父类(基类)的属性和方法的能力。这意味着子类可以使用父类中定义的任何公共、受保护或默认属性和方法,而无需重新编写它们。

使用关键字extends进行继承

Java中使用关键字extends进行类的继承,语法如下:

class Subclass extends Superclass {
    // 子类的属性和方法
}

其中,Subclass是子类的名称,Superclass是父类的名称。

访问修饰符

Java中的继承中,子类可以访问父类的public和protected的变量和方法。如果父类的成员使用了private修饰,则子类无法访问。

另外,在子类中可以使用super关键字来调用父类的构造函数和成员方法。

覆盖方法

当子类继承了一个父类,子类也可以重新定义父类中已有的方法。这个过程称为方法的覆盖(Override)。

子类覆盖父类中的方法,必须具有相同的名称、参数列表和返回类型。当一个子类对象调用一个方法时,它的方法被执行,而不是父类中的方法。

父类的无参构造函数

当子类没有显式地调用父类的构造函数时,Java会默认在子类的构造函数中调用父类中的无参构造函数。如果父类没有无参构造函数,则会编译错误。

如果子类显式地调用了父类的构造函数,Java就不会再提供默认的无参构造函数。

实例

以下是一个简单的程序,演示了Java中的继承:

class Animal {
    public void sound() {
        System.out.println("动物发出声音");
    }
}

class Dog extends Animal {
    public void sound() {
        System.out.println("汪汪汪");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Dog dog = new Dog();
        animal.sound(); // 动物发出声音
        dog.sound(); // 汪汪汪
    }
}

输出结果如下:

动物发出声音
汪汪汪

在上面的例子中,Animal类是一个基类,Dog类是继承自Animal类的子类。

Animal类中有一个公共方法sound()Dog类中同样有一个名为sound()的方法,利用方法的覆盖,当Dog类对象调用sound()方法时,将会执行Dog类中的sound()方法。

小结

Java中的继承是指子类(派生类)继承父类(基类)的属性和方法的能力。子类可以使用父类中定义的任何公共、受保护或默认属性和方法,而无需重新编写它们。在子类中可以使用super关键字来调用父类的构造函数和成员方法。子类可以覆盖(Override)父类中的方法,并可调用父类的无参构造函数。