Java子类继承父类重写父类属性

在Java编程中,子类可以继承父类的属性和方法。有时候,我们可能需要在子类中重写父类的属性,以满足特定的需求。本文将介绍如何在Java中实现子类继承父类并重写父类属性的方法。

继承和重写

在Java中,我们使用extends关键字来实现类的继承。子类会继承父类的属性和方法,从而可以重用父类的代码。当子类中定义了与父类相同的属性或方法时,子类会重写父类的属性或方法。

下面是一个简单的例子,演示了如何在Java中实现子类继承父类并重写父类的属性:

class Animal {
    String name = "Animal";
}

class Dog extends Animal {
    String name = "Dog";
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        System.out.println(dog.name); // 输出 "Dog"
    }
}

在上面的例子中,Dog类继承了Animal类,并重写了name属性。当我们创建Dog对象并访问name属性时,将输出"Dog"

super关键字

在子类中重写父类属性时,有时候我们需要访问父类的属性或方法。这时可以使用super关键字来引用父类的属性或方法。下面是一个使用super关键字的例子:

class Animal {
    String name = "Animal";
}

class Dog extends Animal {
    String name = "Dog";

    void printNames() {
        System.out.println(super.name); // 输出 "Animal"
        System.out.println(this.name); // 输出 "Dog"
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.printNames();
    }
}

在上面的例子中,Dog类中定义了printNames方法,该方法使用super.namethis.name分别访问父类和子类的name属性。

重载与重写

在Java中,重载和重写是两个不同的概念。重载是指在同一个类中定义多个同名的方法,但参数列表不同。而重写是指子类重写父类的方法,方法名和参数列表必须完全相同。

下面是一个重载和重写的例子:

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

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

    void sound(String message) {
        System.out.println(message);
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.sound(); // 输出 "Dog barks"
        dog.sound("Woof Woof"); // 输出 "Woof Woof"
    }
}

在上面的例子中,Animal类中定义了sound方法,Dog类重写了sound方法,并且在Dog类中定义了一个重载的sound方法。

总结

在Java中,子类可以继承父类的属性和方法,并且可以重写父类的属性和方法。通过使用extends关键字和super关键字,我们可以很方便地实现子类继承父类并重写父类属性的功能。同时,要注意区分重载和重写的概念,以免混淆使用。

通过本文的介绍,希望读者能够更好地理解在Java中实现子类继承父类并重写父类属性的方法,从而更加灵活地应用面向对象编程的技朩。

gantt
    title Java子类继承父类重写父类属性示例
    section 代码实现
    学习 :done, des1, 2022-10-01, 2022-10-02
    编码 : done , des2, 2022-10-03, 2022-10-05
    测试 : active, des3, 2022-10-06, 2022