-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;
      }
    }

このコードを実行すると「This is display method」と出力されますが、子クラスで子クラス用のオブジェクトを作成し、親クラスのメソッドを呼び出します。親クラスのメソッドを呼び出すのはなぜですか。

ありがとうございました。

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にアクセスできます。

于 2012-12-17T08:52:39.963 に答える