-4
    abstract class Shape{
       final int b = 20;
       public void display(){
         System.out.println("This is display method");
       }
       abstract public void calculateArea();
    }

    class Rectangle extends Shape{
       public static void main(String args[]){
          Rectangle obj = new Rectangle();
          obj.display();
         //obj.b=200;
      }
    }

当我执行此代码时,它输出“这是显示方法”,但在子类中我为子类创建对象并调用父类方法。为什么它调用父类方法。

谢谢你。

4

3 回答 3

3

1)bfinal父类中。你不能改变价值。你会在这里得到编译错误。
2)public void calculateArea()子类中没有方法。你也会在这里得到编译错误
3)在你的代码中,方法void display()没有被覆盖

于 2012-12-17T08:43:22.003 回答
0

它编译吗?(伊利亚完全正确)

顺便说一句,它正在调用父方法,因为您没有在子类中覆盖它。

abstract class Shape {

    [...]

    public void display() { System.out.println("Parent"); }

}

public class Rectangle extends Shape {

   [...]

    @Override
    public void display() { System.out.println("Child"); }

    public static void main(String[] args)
    {
        new Rectangle().display();

    }

}

这输出:

Child
于 2012-12-17T08:51:07.797 回答
0

o/p 没有错。矩形http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html可以访问 shape 的公共方法

于 2012-12-17T08:52:39.963 回答