Skip to content

在这个例子中,我将定义两个类:AnimalDogAnimal 是父类,包含一些所有动物共有的方法;而 Dog 则是子类,它会继承父类的方法并添加自己的特定行为。

首先,我会在 Animal.java 文件中编写一个基本的动物类:

java
// Animal.java

public class Animal {
    // 定义属性:name(名称)和 age(年龄)
    public String name;
    public int age;

    // 无参构造方法
    public Animal() {}

    // 带参数的构造方法
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 定义一个打招呼的方法,输出动物的名字和年龄
    public void greeting() {
        System.out.println("我是" + this.name + ",今年" + this.age + "岁了。");
    }
}

接下来,在 Dog.java 文件中定义狗类:

java
// Dog.java

public class Dog extends Animal { // 使用extends关键字继承Animal类
    // 定义一个叫的方法,只属于狗的行为
    public void bark() {
        System.out.println("汪汪~");
    }

    @Override  // 使用@Override注解来重写父类的打招呼方法
    public void greeting() {
        super.greeting(); // 调用父类中的greeting方法
        System.out.println("我是忠诚的狗狗," + this.name);
    }
}

最后,在 Main.java 文件中编写主程序:

java
// Main.java

public class Main {
    public static void main(String[] args) {
        // 创建一个Dog对象并初始化属性
        Dog dog = new Dog("小黑", 3);

        // 调用狗的打招呼方法和叫的方法
        dog.greeting();
        dog.bark();

        // 输出结果示例:
        // 我是小黑,今年3岁了。
        // 汪汪~
    }
}

运行代码

  1. 将上述三个文件保存到同一个包中(例如:com.example继承练习)。

  2. 打开命令行工具或IDE运行 Main.java

    bash
    javac Main.java Animal.java Dog.java && java com.example.Main
  3. 输出结果:

    我是小黑,今年3岁了。
    汪汪~我是忠诚的狗狗,小黑。

代码解释

  • 继承关系Dog 类通过 extends Animal 继承自 Animal 类。

  • 方法重写:在 Dog 中使用 @Override 注解并重新定义了父类的 greeting() 方法,实现了多态性。

  • 调用父类方法:使用关键字 super.greeting() 调用了父类中的打招呼方法,并在其后添加了自己的输出内容。

总结

通过这个简单的例子,你可以看到:

  1. 子类可以继承父类的所有属性和方法。
  2. 子类可以通过重写(Override)来覆盖父类的方法以实现不同的行为。
  3. 使用 super 关键字可以在子类中调用父类的构造方法或被重写的成员方法。

这种面向对象编程特性使得代码更加模块化、可维护,并且能够提高开发效率。