2

我有一个包含非抽象方法的抽象类,如下所示。

abstract class myClass {     
    public void myNonAbstractMethod()
    {
        //some logic goes here...
    }   
}

现在我的问题是,是否可以myNonAbstractMethod()直接调用而无需派生myClass

4

2 回答 2

5

不,因为abstract class不能自行实例化。您必须从中派生才能构建实例。

 public abstract class Base {

   public void BaseMethod() {
   }
 }

 var bs = new Base();  //FAIL TO COPMILE

但..

 public class Derived : Base {

 }

 var bs = new Derived ();  //OK
 bs.BaseMethod(); //OK 
于 2013-11-12T10:50:46.677 回答
5

您无法实例化抽象类,这意味着您无法直接从中调用实例方法。

static如果您真的不想派生该方法,则可以创建该方法,但最好使用子类。

public class Test {
    public static void main(String[] args) {
         System.out.println(SomeTest.size());
    }
}

abstract class SomeTest {
    public static int size() {
        return 5;
    }
}

输出:

5

于 2013-11-12T10:50:53.620 回答