public class Fish
{
// Any fish below this size must be thrown back into the lake
public static int THROW_BACK_SIZE = 18;
protected int size;
protected float weight;
public Fish(int aSize, float aWeight)
{
size = aSize;
weight = aWeight;
}
public boolean canKeep()
{
if (size>THROW_BACK_SIZE){
return true;
}
else{
return false;
}
}
public boolean isDesirableTo(Fisher f)
{
if(size>THROW_BACK_SIZE && Fisher.numFishCaught<Fisher.LIMIT){
return true;
}
else{
return false;
}
}
public int getSize() { return size; }
public float getWeight() { return weight; }
public String toString ()
{
return ("A " + size + "cm " + weight + "kg Fish");
}
}
这是我目前在鱼类课程中所拥有的。我现在想要制作两个子类,NonEndangeredFish和EndangeredFish。在NonEndangeredFish下有Perch和Bass的子类,而EndangeredFish有AuroraTrout和AtlanticWhiteFish。请注意,Fish,NonEndangeredFish和EndangeredFish都是抽象类,而其他4个是具体类。除了Fish类之外,这里没有其他类具有在其中定义的任何属性。这是我试图在我的鱼类下面但却没有成功的。
public abstract class NotEndangeredFish extends Fish{
}
我收到了这个错误:
Error: class NotEndangeredFish is public, should be declared in a file name NotEndangeredFish.java
非常感谢任何有关如何正确执行此操作的帮助。 谢谢!
答案 0 :(得分:2)
每个公共类(内部除外)必须在根据类命名的单独文件中声明。
答案 1 :(得分:1)
错误很清楚。 class NotEndangeredFish
是公开的,因此应在名为NotEndangeredFish.java
的其他文件中声明。
为什么每个公共类都在一个单独的文件中?
这个限制意味着每个编译单元最多只能有一个这样的类型。这种限制使得Java编程语言的编译器或Java虚拟机的实现很容易在包中找到命名类;例如,公共类型wet.sprocket.Toad的源代码可以在wet / sprocket目录中的Toad.java文件中找到,相应的目标代码可以在同一目录中的Toad.class文件中找到。
答案 2 :(得分:0)
就像错误所说的那样,您必须将NotEndangeredFish
文件的名称设为NotEndangeredFish.java
。