//此程序报错说类CareAnimal是公共的,应在文件中声明等。
public interface CareAnimal {
public void play();
public void feed();
}
class Cadre implements CareAnimal {
void play() {
System.out.println("干部带它玩");
}
void feed() {
System.out.println("干部给它喂食");
}
void travel() {
System.out.println("干部带它旅游");
}
}
public class Test {
public static void main(String args[]) {
Cadre a = new Cadre();
a.travel();
}
}

楼主新建一个CareAnimal.java吧
覆盖类方法的可访问性不能低于被覆盖类方法的可访问性(这个人家已经说了)
原因是此等覆盖结构体系在对外使用时可能只有被覆盖类已知,而覆盖类的具体细节可能要等到运行时才能得悉(多态),这样可能会导致运行时错误。另外接口类型方法不管声明不声明都是public abstract的(声明反而显得有点多余,根据JLS)
public class TestCars {
public static void main (String [] args) {
Car a = new Car();
Car b = new Porsche(); //Car ref, but a Porsche object
a.drive(); // Runs the Car version of drive()
b.drive(); // Runs the Porsche version of drive()
}
}
class Car {
public void drive() {
System.out.println("Generic Car Driveing Generically");
}
}
class Porsche extends Car {
private void drive() { // whoa! - it's private!
System.out.println("Porsche driving Full Throttle"); public interface CareAnimal
class Cadre implements CareAnimal
public 子类的范围不能比父类小。
对,而且楼上的也说到了,Cadre类的方法不能比父类中的方法可见性低。如果你要改这个文件的话
把CareAnimal接口的public去掉,把Cadre类的方法加上public
定!
Cadre类不加public,类里面的方法加public一个.java文件里面只能有一个public类,而且.java文件以这个类名命名。不然编译器找不到程序入口在哪里。Cadre 类中实现的三个方法前加上public,不要用那个默认的把Cadre中的play和feed改成public控制