2

抽象スーパークラスを拡張するクラスを実装しようとしている課題に取り組んでいますが、

    public class B extends A{}

ただし、タイプ B は抽象メソッド A.act を実装する必要があるというエラーが表示されます。extend を使用せずにこれを行う別の方法はありますか?

使用:

    public abstract class B extends A{}

正しいはずの割り当ての別の部分で別のエラーが発生します。

私は何をすべきか?助けてくれてありがとう。

4

2 に答える 2

2

JVMによってインスタンス化されるためにBは、である必要がありますabstract。抽象クラスは、クラスがどのように機能するかについてのアイデアまたは提案であり、クラスを拡張したクラスによって実装する必要のある機能の一部(またはすべて)が含まれます。

インスタンス化するにはB、のすべての抽象メソッドを実装する必要がありますA

問題を解決するには、 ...Aとしてマークされたメソッドの実装を提供する必要があります。abstract

public abstract class A {
     public abstract void implementMe();
}

public class B extends A {
    public void implementMe() {
        // Your implementation
    }
}

これの多くの理由は、それBを使用するメソッドとクラスに渡すことができA、動作方法を変更できることですA。これはポリモーフィズムの一部であり、オブジェクトの1つのインスタンスがその親として機能できます(そのBように機能しますA

それが役立つかどうかはわかりませんが、抽象クラスとメソッドを読むことができます

于 2012-10-07T04:35:46.903 に答える
0

B で act の実装を提供したくない場合は、抽象クラス A でメソッド act を抽象メソッドとして宣言しないでください。2 番目のケースで、抽象クラスが別の抽象クラスを拡張する場合は、「拡張」ではなく「実装」を使用します。それが役に立てば幸い

于 2012-10-07T04:41:10.510 に答える