interface Food{
void annimal_food();
}
abstract class Animal{
abstract void eat(Food food);
}
class Feeder{
void feed(Animal a,Food f) {
System.out.println("表示动物a喂食物f");
}
}
class Bone implements Food{
public void annimal_food() {
System.out.println("我是骨头");
}
}
class Fish extends Animal implements Food{
@Override
public void eat(Food food) {
System.out.println("我是鱼,我吃东西");
}
public void annimal_food() {
System.out.println("我是鱼");
}
}
class Cat extends Animal{
public void eat(Food food) {
System.out.println("我是猫,我要吃东西");
}
}
class Dog extends Animal{
public void eat(Food food) {
System.out.println("我是狗,我要吃东西");
}
}
public class Test {
Feeder feeder = new Feeder();
Animal animal = new Cat();
Food food = new Fish();
Feeder.feed(animal,food);
}
Feeder.feed(animal,food);为什么报错
feeder.feed(animal,food);
第一个f小写
大写代表的是Feeder类,不是对象feeder
class Untitled {
public static void main(String[] args) {
Feeder feeder = new Feeder();
Animal animal = new Cat();
Food food = new Fish();
feeder.feed(animal,food);
}
}
interface Food{
void annimal_food();
}
abstract class Animal{
abstract void eat(Food food);
}
class Feeder{
void feed(Animal a,Food f) {
System.out.println("表示动物a喂食物f");
}
}
class Bone implements Food{
public void annimal_food() {
System.out.println("我是骨头");
}
}
class Fish extends Animal implements Food{
@Override
public void eat(Food food) {
System.out.println("我是鱼,我吃东西");
}
public void annimal_food() {
System.out.println("我是鱼");
}
}
class Cat extends Animal{
public void eat(Food food) {
System.out.println("我是猫,我要吃东西");
}
}
class Dog extends Animal{
public void eat(Food food) {
System.out.println("我是狗,我要吃东西");
}
}
表示动物a喂食物f
public class Test {
public static void main(String[] args) {
Feeder feeder = new Feeder();
Animal animal = new Cat();
Food food = new Fish();
feeder.feed(animal,food);
}
}
因为feeder.feed是方法调用,不能将方法调用直接写在类里,应该写在类的某个方法里。类只负责定义属性和方法等,不负责实际的调用动作。