我可以在我的超类中使用子类的名称吗?

时间:2014-02-13 04:44:03

标签: java subclass superclass

我有超类,看起来像:

 public abstract class Fish {

 protected int size;

 protected float weight;

 //constructor

 public Fish(int s, float w) {
 size = aSize;weight = aWeight;}

我有这个超类的2个子类。第一个:

 public class SomeFish extends Fish{

 //constructor

 public SomeFish(int s, float w) {

 super(s, w) }

第二个:

public class AnotherFish extends Fish{

 //constructor

 public AnotherFish(int s, float w) {

 super(s, w) }

我要做的是在 Fish类中编写一个String toString方法,它会返回类似于:12 cm 0.5 这里应该是正确类型的鱼(AnotherFish或SomeFish)。我可以不使用字符串toString方法抽象并在SomeFish和AnotherFish类中实现字符串toString方法吗?

1 个答案:

答案 0 :(得分:5)

请参阅this实例的类,它将是实际类(可能是子类):

public abstract class Fish {

    // rest of class omitted

    @Override
    public String toString() {
        return "A " + size + "cm, " + weight + "kg " + getClass().getSimpleName();
    }
}

调用getClass().getSimpleName()将返回字符串"AnotherFish"等。

无需在子类中定义任何内容以使其工作。