public abstract class Shape
{
protected String color;
// Constructor
public Shape (String color)
{
this.color = color;
}
public String toString()
{
return "Color = " + color;
}
abstract double getArea();
}
那是我的孩子班:
public class Rectangle extends Shape
{
private int width;
private int length;
// Constructor
public Rectangle(String color, int length, int width)
{
super(color);
this.length = length;
this.width = width;
}
public String toString()
{
return "color = " + color + "\nlength = " + this.length + "\nwidth = " + this.width;
}
public double getArea()
{
return length*width;
}
}
主要代码:
public class TestShape
{
public static void main(String[] args)
{
Shape a = new Rectangle("RED",10,5);
a.getArea();
}
}
我的问题是虽然它编译得很好,但我没有得到任何结果,我想知道为什么我的子类中的方法不会覆盖抽象类的方法。感谢任何帮助
答案 0 :(得分:2)
我的问题是虽然编译得很好,但我没有得到任何结果
您需要添加print语句以将方法调用的结果打印回控制台,因此System.out.println(a.getArea());
我想知道为什么我的子类中的方法不会覆盖抽象类的方法。
它确实如此(toString()
类也是Object
方法。如果它没有,编译器会抛出一个错误,说明抽象类中的所有抽象方法都没有实现(如果你实现了一个接口,情况也是如此)。
但是,最好在方法上方添加@Override
注释,以表示方法被覆盖。像Eclipse或Netbeans这样的IDE应该自动添加它。