1

スーパークラスでメソッドを定義し、実装をサブクラスに任せるにはどうすればよいでしょうか?

4

4 に答える 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
    }
}

注: インターフェイスのメソッドは自動的にabstractandpublicになります。クラスのメソッドとは異なり、クラスのメソッドはデフォルトでパッケージ プライベートであり、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 に答える