在Java中,我应该如何定义一个名为Animal的抽象父类,它有name和age属性,以及eat和sleep方法?接着,请指导如何创建两个具体子类,如Bird和Human,它们分别继承自Animal,鸟吃虫的方法和人吃饭的方法需要重写,该如何实现这个结构?
时间: 2024-10-24 19:04:08 浏览: 21
在Java中,你可以按照以下步骤定义一个名为Animal的抽象父类:
```java
public abstract class Animal {
private String name;
private int age;
// 构造函数
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
// 定义abstract方法,表示eat和sleep尚未实现
public abstract void eat();
public abstract void sleep();
// 获取和设置属性的方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
```
接下来,我们创建两个具体的子类,Bird和Human,来实现Animal的eat和sleep方法:
```java
public class Bird extends Animal {
public Bird(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println(getName() + " is eating bugs.");
}
@Override
public void sleep() {
System.out.println(getName() + " is sleeping on a branch.");
}
}
public class Human extends Animal {
public Human(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println(getName() + " is eating food.");
}
@Override
public void sleep() {
System.out.println(getName() + " is sleeping in bed.");
}
}
```
在这个结构中,Bird和Human都实现了eat和sleep方法,并针对各自的特性进行了重写。当你实例化并操作这些子类的对象时,会根据其实际类型调用相应的eat和sleep方法。
阅读全文