-2

デフォルトの実装を持つメソッドが1つしかない抽象Superクラスがあるとします。現在、サブクラスはスーパークラスを拡張しており、スーパークラスのメソッドをオーバーライドします。

サブクラスオブジェクトを使用せずにスーパークラスのメソッドを呼び出す方法は?

public abstract class SuperClass
{
    public void test()
    {
      System.out.println("SuperClass test method called");
    }
}

public class SubClass extends SuperClass
{
    public void test()
    {
      System.out.println("SubClass test method called");
    }
}

public class CallAbstract
{
     public static void main(String[] args)
     {
        //How to Call abtract SuperClass test method without using sub class object?
     }
}
4

2 に答える 2

3

別の匿名クラスを使用して、次のことができます。

public class CallAbstract
{
   public static void main(String[] args)
   {
      (new BaseClass(){ }).test();
   }
}
于 2012-11-11T14:12:04.583 に答える
0

メソッドを上書きしない別のサブクラスが必要です。test()

public class OtherSubClass extends BaseClass {

}

そしてあなたのmain方法では:

OtherSubClass osc = new OtherSubClass();
osc.test();

または、EdwinDalorzoが提案するように匿名のクラスを使用します。

于 2012-11-11T14:10:40.257 に答える