次のように、非抽象メソッドを含む抽象クラスがあります。
abstract class myClass {
public void myNonAbstractMethod()
{
//some logic goes here...
}
}
今私の質問は、myNonAbstractMethod()
派生せずに直接呼び出すことは可能myClass
ですか?
次のように、非抽象メソッドを含む抽象クラスがあります。
abstract class myClass {
public void myNonAbstractMethod()
{
//some logic goes here...
}
}
今私の質問は、myNonAbstractMethod()
派生せずに直接呼び出すことは可能myClass
ですか?
いいえ、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
抽象クラスをインスタンス化することはできません。つまり、抽象クラスからインスタンス メソッドを直接呼び出すことはできません。
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