package test;
abstract class Animall{
String name="小小";
int height=30;
public abstract void eat();{
System.out.println("动物的特征");
}
}
class Cat extends Animall{
public void eat(){
System.out.println("猫喜欢吃小鱼");
}
}
public class dog extends Animall{
public void eat(){
System.out.println("狗喜欢吃骨头");
}
}
public class Animal {
public static void main(String[] args) {
Animall My = new Cat();
My.eat();
Animall Mydog = new dog();
Mydog.eat();
}}为什么我在 Cat类和dog类前面加上public运行就会出现这样的错误呢?
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
公用类型 Cat 必须在它自己的文件中定义
公用类型 dog 必须在它自己的文件中定义 at test.Cat.<init>(Animal.java:10)
at test.Animal.main(Animal.java:22)
abstract class Animall{
String name="小小";
int height=30;
public abstract void eat();{
System.out.println("动物的特征");
}
}
class Cat extends Animall{
public void eat(){
System.out.println("猫喜欢吃小鱼");
}
}
public class dog extends Animall{
public void eat(){
System.out.println("狗喜欢吃骨头");
}
}
public class Animal {
public static void main(String[] args) {
Animall My = new Cat();
My.eat();
Animall Mydog = new dog();
Mydog.eat();
}}为什么我在 Cat类和dog类前面加上public运行就会出现这样的错误呢?
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
公用类型 Cat 必须在它自己的文件中定义
公用类型 dog 必须在它自己的文件中定义 at test.Cat.<init>(Animal.java:10)
at test.Animal.main(Animal.java:22)
并且文件名和public类名相同
并且文件名和public类名相同--java就是这样归定的,至于为什么这么规定,我也不知道,没人告诉我啊。
gosling的the Java Programming language里面说,大部分虚拟机会有这个要求。
System.out.println("动物的特征"); } 这里也有问题,抽象方法不需要加{},应该是
public abstract void eat();
后面的就不要了。
并且文件名和public类名相同jvm 这么要求的,java的规范