如何在不派生抽象类的情况下直接调用抽象类的非抽象方法?

时间:2013-11-12 10:48:38

标签: c#

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

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

现在我的问题是,是否可以在不派生myNonAbstractMethod()的情况下直接致电myClass

2 个答案:

答案 0 :(得分: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 

答案 1 :(得分: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