定义一个动物父类,定义eat类。 ② 定义猫和狗子类,继承父类,重写eat类。 ③ 在测试类,创建父类的变量指向子类的对象,多态就产生了。用Java写这个
时间: 2023-06-05 18:07:37 浏览: 532
代码:
动物父类:
```java
public class Animal {
public void eat(){
System.out.println("动物都会吃东西");
}
}
```
猫子类:
```java
public class Cat extends Animal {
@Override
public void eat(){
System.out.println("猫吃鱼");
}
}
```
狗子类:
```java
public class Dog extends Animal {
@Override
public void eat(){
System.out.println("狗吃肉");
}
}
```
测试类:
```java
public class Test {
public static void main(String[] args) {
Animal animal1 = new Cat();
animal1.eat();
Animal animal2 = new Dog();
animal2.eat();
}
}
```
运行结果:
```
猫吃鱼
狗吃肉
```
在测试类中,用父类的变量指向子类的对象,实现了多态的效果。不同的子类对象调用了重写后的eat方法,打印出了不同的结果。
相关问题
1)创建各种动物的父类Animal,在该类中定义 eat()方法。(2)创建动物老虎 (Tiger),它继承 Animal 类,重写 eat() 方法。(3)新建 Test 类,在 main() 方法中,实例化老虎类,调用 eat) 方法。观察执行结果。(4)在 Tiger 类中新定义 action()方法,通过 super 关键字,调用父类本身的eat0行为。
1. 代码实现:
```java
class Animal {
public void eat() {
System.out.println("Animal is eating.");
}
}
class Tiger extends Animal {
@Override
public void eat() {
System.out.println("Tiger is eating.");
}
public void action() {
super.eat();
}
}
public class Test {
public static void main(String[] args) {
Tiger tiger = new Tiger();
tiger.eat();
tiger.action();
}
}
```
2. 执行结果:
```
Tiger is eating.
Animal is eating.
```
解析: 在 Tiger 类中重写 eat() 方法后,调用 eat() 方法时执行的是子类 Tiger 的 eat() 行为。然后通过调用 action() 方法中的 super.eat(),实现了调用父类 Animal 的 eat() 行为。
宠物Pet是父类,有一eat()方法表示宠物会吃东西,但不同的宠物吃东西的情况不一样,所以将其定义成抽象方法,将由子类进行重写来实现。 定义小狗累Dog继承Pet类,除了重写方法外还要添加一个特有的guard()方法,输出内容为“小狗会看家护院”。 定义小猫类Cat继承Pet类,除了重写方法外还要添加一个特有的catchMouse()方法,输出内容为“小猫会抓老鼠”。 创建测试类,分别实例化小猫和小狗,调用父类的eat()方法和小猫小狗的特有方法。
代码如下:
```java
// 父类 Pet
public abstract class Pet {
public abstract void eat();
}
// 子类 Dog
public class Dog extends Pet {
@Override
public void eat() {
System.out.println("小狗吃骨头");
}
public void guard() {
System.out.println("小狗会看家护院");
}
}
// 子类 Cat
public class Cat extends Pet {
@Override
public void eat() {
System.out.println("小猫吃鱼");
}
public void catchMouse() {
System.out.println("小猫会抓老鼠");
}
}
// 测试类
public class TestPet {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
dog.eat(); // 调用父类的 eat() 方法
dog.guard(); // 调用子类 Dog 特有的 guard() 方法
cat.eat(); // 调用父类的 eat() 方法
cat.catchMouse(); // 调用子类 Cat 特有的 catchMouse() 方法
}
}
```
输出结果为:
```
小狗吃骨头
小狗会看家护院
小猫吃鱼
小猫会抓老鼠
```
阅读全文