编写类Dog和 Cat,继承自Animal,Dog和 Cat类中: 1) 有属性:name(String)、age(int) 2) 重写方法:void speak(),在speak方法中输出Animal类的 name,定义Dog、Cat类的eat()方法
时间: 2024-03-21 07:37:44 浏览: 113
animal 类的继承
好的,下面是代码实现:
```java
public class Animal {
protected String name;
protected int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public void speak() {
System.out.println("我是一只" + name + ",今年" + age + "岁了!");
}
}
public class Cat extends Animal {
public Cat(String name, int age) {
super(name, age);
}
public void eat() {
System.out.println("猫在吃鱼!");
}
@Override
public void speak() {
System.out.println("我是一只猫,我的名字叫" + name);
}
}
public class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
public void eat() {
System.out.println("狗在吃骨头!");
}
@Override
public void speak() {
System.out.println("我是一只狗,我的名字叫" + name);
}
}
```
在 Animal 类中,我们将 name 和 age 属性设置为 protected 访问级别,以便它们可以在派生类中访问。Cat 和 Dog 类中分别定义了 eat 方法,实现猫和狗的独特功能。还重写了 speak 方法,输出猫和狗的名称。注意,子类的方法签名必须与父类的方法签名完全相同,否则无法重写该方法。
您可以在主函数中创建 Cat 和 Dog 对象并调用它们的方法:
```java
public class Main {
public static void main(String[] args) {
Animal animal1 = new Animal("动物", 5);
animal1.speak();
Cat cat1 = new Cat("小花", 2);
cat1.speak();
cat1.eat();
Dog dog1 = new Dog("小黑", 3);
dog1.speak();
dog1.eat();
}
}
```
阅读全文