创建一个子类

时间:2014-02-23 21:20:33

标签: java

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

非常感谢任何有关如何正确执行此操作的帮助。 谢谢!

3 个答案:

答案 0 :(得分:2)

每个公共类(内部除外)必须在根据类命名的单独文件中声明。

答案 1 :(得分:1)

错误很清楚。 class NotEndangeredFish是公开的,因此应在名为NotEndangeredFish.java的其他文件中声明。

为什么每个公共类都在一个单独的文件中?

  

这个限制意味着每个编译单元最多只能有一个这样的类型。这种限制使得Java编程语言的编译器或Java虚拟机的实现很容易在包中找到命名类;例如,公共类型wet.sprocket.Toad的源代码可以在wet / sprocket目录中的Toad.java文件中找到,相应的目标代码可以在同一目录中的Toad.class文件中找到。

See this for further information.

答案 2 :(得分:0)

就像错误所说的那样,您必须将NotEndangeredFish文件的名称设为NotEndangeredFish.java