我有超类,看起来像:
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方法吗?
答案 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"
等。
无需在子类中定义任何内容以使其工作。