抽象类,子类不重写方法

时间:2016-03-24 12:29:32

标签: java

在发布这个问题之前我搜索了很多但是我得到的更多问题需要回答。我是java的新手,所以我的问题可能很简单 无论如何我的问题是这样的: 那是我的超级班级

    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();

   }
}

我的问题是虽然它编译得很好,但我没有得到任何结果,我想知道为什么我的子类中的方法不会覆盖抽象类的方法。感谢任何帮助

1 个答案:

答案 0 :(得分:2)

  

我的问题是虽然编译得很好,但我没有得到任何结果

您需要添加print语句以将方法调用的结果打印回控制台,因此System.out.println(a.getArea());

  

我想知道为什么我的子类中的方法不会覆盖抽象类的方法。

它确实如此(toString()类也是Object方法。如果它没有,编译器会抛出一个错误,说明抽象类中的所有抽象方法都没有实现(如果你实现了一个接口,情况也是如此)。

但是,最好在方法上方添加@Override注释,以表示方法被覆盖。像Eclipse或Netbeans这样的IDE应该自动添加它。