public class pro2 { public static void main(String[] args) { Food fish = new Fish(); // 声明Food类对象fish,并使用Fish类对象初始化 fish.setFood("小鱼干");// 调用setFood()方法 Animal cat = new Cat();// 声明Animal类对象cat,并使用Cat类对象初始化 cat.eat(fish); // 调用eat()方法 Food bone = new Bone();// 声明Food类对象bone,并使用Bone类对象初始化 bone.setFood("大骨头");// 调用setFood()方法 Animal dog = new Dog();// 声明Animal类对象dog,并使用Dog类对象初始化 dog.eat(bone); // 调用eat()方法 } } /* Animal.java */ interface Animal { // 定义Animal接口 void eat(Food food); // 定义eat()方法 } class Cat implements Animal { // 定义Cat类实现Animal接口 @Override public void eat(Food food) { // 重写eat()方法 // 调用getFood()方法,并输出猫吃什么 System.out.println("猫吃" + food.getFood()); } } class Dog implements Animal { // 定义Dog类实现Animal接口 @Override public void eat(Food food) { // 重写eat()方法 // 调用getFood()方法,并输出狗吃什么 System.out.println("狗吃" + food.getFood()); } } /* Food.java */ abstract class Food { // 定义Food抽象类 String name; // 定义变量name abstract String getFood(); // 定义抽象方法getFood() abstract void setFood(String name); // 定义抽象方法setFood() } class Fish extends Food { // 定义Fish类继承Food类 public String getFood() { // 重写getFood()方法 System.out.println("饲养员给猫喂" + name); // 输出饲养员给猫喂什么 return name; // 返回name } public void setFood(String name) { // 重写setFood()方法 this.name = name; // 给name赋值 } } class Bone extends Food { // 定义Bone类继承Food类 public String getFood() { // 重写getFood()方法 System.out.println("饲养员给狗喂" + name); // 输出饲养员给狗喂什么 return name; // 返回name } public void setFood(String name) { // 重写setFood()方法 this.name = name; // 给name赋值 } }
时间: 2024-04-01 12:34:21 浏览: 175
这段代码是一个简单的面向对象的示例,实现了一个动物吃食物的功能。其中定义了一个Animal接口,它有一个eat()方法;Cat和Dog类实现了Animal接口,它们重写了eat()方法;Food是一个抽象类,它有一个抽象方法getFood()和setFood(),Fish和Bone类继承了Food,它们分别实现了getFood()和setFood()方法。在main()方法中创建了一个Fish对象和一个Cat对象,调用eat()方法;另外创建了一个Bone对象和一个Dog对象,也调用了eat()方法。这个示例展示了接口、抽象类、继承和重写等面向对象的基本概念和语法。
相关问题
public class al4_2 { public static void main(String[] args) { Feeder feeder = new Feeder("小华"); //创建Feeder类实例对象 feeder.speak(); Dog dog = new Dog("小狗"); //创建Dog类实例对象 dog.shout(); //调用Dog类中重写的shout()方法 Food food = new Bone(); //创建Food类实例对象 feeder.feed(dog, food); Cat cat = new Cat("小猫"); //创建Cat类实例对象 cat.shout(); //调用Cat类中重写的shout()方法 food = new Fish("黄花鱼"); //创建Fish实例化对象 feeder.feed(cat, food); //调用Feeder类中的feed()方法 } }
这是一个简单的面向对象的示例代码,其中定义了三个类:Feeder、Dog和Cat,以及两个接口:Food和Shout。主函数中创建了Feeder、Dog和Cat的实例对象,并调用它们的方法进行互动。
Feeder类表示喂食员,有一个speak()方法表示说话,还有一个feed()方法可以给动物喂食。Dog类和Cat类都实现了Shout接口,表示它们能够发出声音,有一个shout()方法用于发出叫声。Food接口表示食物,有一个eat()方法用于表示食物被吃掉。
在主函数中,首先创建了一个Feeder类的实例对象feeder,并调用了它的speak()方法。然后创建了一个Dog类的实例对象dog,并调用了它的shout()方法。接着创建了一个Bone类的实例对象food,并将它传递给了feeder.feed()方法,表示给狗喂食。同样地,创建了一个Cat类的实例对象cat,并调用了它的shout()方法。最后创建了一个Fish类的实例对象food,并将它传递给了feeder.feed()方法,表示给猫喂食。
这个示例代码很好地展示了面向对象的思想,将实体抽象为类和接口,让它们能够互相协作完成任务。
package zzl3104.dongwu; abstract class Animal { private String name; public Animal(String name) { this.name = name; } public abstract void shout(); public abstract void eat(Food food); public String getName() { return name; } public void setName(String name) { this.name = name; } } class Dog extends Animal { public Dog(String name) { super(name); } @Override public void shout() { System.out.println("汪汪汪~~~"); } @Override public void eat(Food food) { System.out.println(getName() +"正在啃着香喷喷的" + food.getName()); } } class Cat extends Animal{ public Cat(String name) { super(name); } public void shout() { System.out.println("喵喵喵~~~"); } public void eat(Food food) { System.out.println(getName() + "正在吃着香喷喷的" + food.getName()); } } interface Food { public abstract String getName(); } class Bone implements Food { @Override public String getName() { return "骨头"; } } class Fish extends Animal implements Food { public Fish(String name) { super(name); } @Override public void shout() { } @Override public void eat(Food food) { } } public class Feeder { private String name; public Feeder(String name) { this.name = name; } public void speak() { System.out.println("欢迎来到动物园!"); System.out.println("我是饲养员" + getName()); } public void feed(Animal a, Food food) { a.eat(food); } public String getName() { return name; } public void setName(String name) { this.name = name; } } class DongWuTest { public static void main(String[] args) { Feeder feeder = new Feeder("小华"); feeder.speak(); Dog dog = new Dog("小狗"); dog.shout(); Food food = new Bone(); feeder.feed(dog, food); Cat cat = new Cat("小猫"); cat.shout(); food = new Fish("黄花鱼"); feeder.feed(cat, food); } }
这是一段Java代码,定义了一个抽象类Animal和其子类Dog和Cat,还有一个实现了Food接口的类Bone和一个既是Animal又是Food的类Fish。
Feeder类是饲养员类,可以说话,并能够喂养动物。在DongWuTest类中,实例化了一个Feeder对象,并通过它喂养了一只狗和一只猫,分别喂了骨头和黄花鱼。
阅读全文