编写一个Animal类,并定义一些成员变量和成员方法,然后再编写一个继承Animal的子类,要求子类对父类中的成员方法进行重写,在测试类中使用所定义的类,说明其效果
时间: 2024-12-29 19:36:50 浏览: 14
当然可以。首先,我们创建一个名为`Animal`的抽象基础类,它包含一些通用的行为和属性:
```java
public abstract class Animal {
private String name;
protected int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
// 父类的抽象方法,所有动物都会叫
public abstract void makeSound();
// 访问器方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
然后,我们可以定义一个具体的子类`Dog`,继承自`Animal`并重写了`makeSound()`方法:
```java
public class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
@Override
public void makeSound() {
System.out.println("汪汪汪,我是" + getName());
}
}
```
现在,我们编写一个测试类`Test`来实例化`Animal`和`Dog`,并演示多态的效果:
```java
public class Test {
public static void main(String[] args) {
Animal myPet = new Dog("小黄", 5); // 创建狗对象,通过父类型的引用
myPet.makeSound(); // 调用的是Dog的makeSound方法
Animal anotherPet = new Dog("小白", 7);
anotherPet.makeSound(); // 也调用的是Dog的makeSound方法
System.out.println(anotherPet.getName()); // 输出另一个宠物的名字
}
}
```
当运行`Test`类,你会看到这样的输出:
```
汪汪汪,我是小黄
汪汪汪,我是小白
```
这展示了多态性,即子类的对象通过父类型引用调用时,实际执行的是子类特有的方法。
阅读全文