スーパークラスでメソッドを定義し、実装をサブクラスに任せるにはどうすればよいでしょうか?
質問する
558 次
4 に答える
5
メソッドを終了しますabstract
:
abstract class A {
abstract void doStuff();
}
class B extends A {
void doStuff() {
// stuff
}
}
ご了承ください...
クラスに抽象メソッドが含まれる場合、クラス自体を宣言する必要があります
abstract
抽象クラスは構築できません (new A()
エラーになりますが、問題ありませnew B()
ん)。また、サブクラスも抽象でない限り、すべての抽象メソッドを実装する必要があります。
abstract class A {
abstract void doStuff();
}
abstract class B extends A {
// This is fine since B is abstract
}
class C extends A {
// This is an error since doStuff() isn't implemented
}
抽象クラスを使用すると、抽象メソッドと通常のメソッドを混在させることができます。
abstract class A {
abstract void doStuff();
void doOtherStuff() {
// Subclasses don't need to implement this
}
}
interface
すべてのメソッドが抽象的である場合、クラスは複数のインターフェースを実装するため、を使用する方が理にかなっている可能性があります。
interface DoesStuff {
void doStuff();
}
interface DoesOtherStuff {
void doOtherStuff();
}
class B implements DoesStuff, DoesOtherStuff {
void doStuff() {
// stuff
}
void doOtherStuff() {
// other stuff
}
}
注: インターフェイスのメソッドは自動的にabstract
andpublic
になります。クラスのメソッドとは異なり、クラスのメソッドはデフォルトでパッケージ プライベートであり、abstract ではありません。
于 2012-10-24T21:28:38.713 に答える
4
スーパークラスをクラスとして作成し、メソッドをabstract
メソッドとして定義して、abstract
サブクラスに強制的に実装を提供する (または) 自分自身を として作成しabstract
ます。
例:
abstract class Super {
abstract void absMethod();
}
class Sub extends Super {
void absMethod() {
// implementation
}
}
于 2012-10-24T21:28:26.183 に答える
1
スーパークラスで抽象メソッドを作成します。
abstract class SuperClass {
public abstract void mustImplement();
}
class SubClass extends SuperClass {
public void mustImplement() {
// Do stuff here
}
}
于 2012-10-24T21:29:26.790 に答える
1
抽象宣言する必要があります。例えば
abstract class MyBaseClass
{
protected abstract void myMethod();
}
class MyChildClass extends MyBaseClass
{
protected void myMethod()
{
// here is my implementation!
}
}
于 2012-10-24T21:30:04.150 に答える