编写一个Animal类,并定义一些成员变量和成员方法,然后再编写一个继承Animal的子类,要求子类对父类中的成员方法进行重写。在测试类中使用所定义的类,说明其效果
时间: 2024-12-29 22:36:59 浏览: 9
好的,首先,让我们创建一个名为`Animal`的基本类,它包含一些通用的属性和方法:
```java
public class Animal {
private String name;
private int age;
// 构造函数
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
// 获取名字和年龄的方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
// 父类的通用行为
public void makeSound() {
System.out.println("This animal makes a generic sound.");
}
}
```
接着,我们定义一个名为`Dog`的子类,它继承自`Animal`并重写了父类的`makeSound()`方法:
```java
public class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
// 重写父类的makeSound方法
@Override
public void makeSound() {
System.out.println("The dog barks.");
}
}
```
在测试类`Test`中,我们可以创建`Animal`和`Dog`的对象,并展示它们的行为:
```java
public class Test {
public static void main(String[] args) {
// 创建一个Animal实例
Animal animal = new Animal("Generic Animal", 5);
animal.makeSound(); // 输出 "This animal makes a generic sound."
// 创建一个Dog实例,它是Animal的子类
Dog dog = new Dog("Rex", 3);
dog.makeSound(); // 输出 "The dog barks."
// 通过父类引用调用子类方法,体现多态
Animal myPet = dog; // 将Dog视为Animal类型
myPet.makeSound(); // 输出 "The dog barks." 因为动态绑定,这里调用了Dog的实现
}
}
```
总结一下,这个例子展示了如何在Java中实现多态,即子类通过重写父类的方法,使得在运行时可以根据实际对象类型的不同(即动态绑定),调用相应的方法实现。这就是多态的主要作用:提高代码的灵活性和复用性。
阅读全文