2017-08-03 13 views
0

私は特定のクラスにかなりの数のメソッドがあるところでプログラムを書いているので、メソッドを追跡するのに役立つ抽象クラスを書くことにしました。Javaの抽象クラスに関するクエリ

ここでは、抽象クラスで抽象メソッドを宣言しています。抽象クラスを継承する他のクラスでは、このメソッドをオーバーライドしたいが、アクセス特権をprivateに減らしたい。ここでは、コンパイラが問題を提起しています。より弱いアクセス特権を割り当てようとする試みが行われていると言われています。これは許されません。抽象クラスのメソッドをprotectedとして宣言しようとすると(私もprivateクラスをprotectedに変更しています)、抽象クラスと保護クラスを同時に使用することはできません。

どうすればいいですか?両方のクラスでメソッドパッケージをアクセスまたはパブリックにする必要がありますか?もしそうなら、私はこれらのメソッドを私的に宣言することはできませんか?

私は抽象クラスと一般的なクラスではないことにご注意ください。

+2

抽象クラスを持つことは、「メソッドの追跡」にどのように役立ちますか? –

+1

あなたは絶対に 'protected abstract'メソッドを持つことができます。 – shmosel

+1

Btw、これは[XY問題](http://xyproblem.info/)のように見えます。おそらくあなたが達成しようとしているものを詳しく説明する必要があります。 – shmosel

答えて

1

あなたはそれができないことを意味しますかprotected abstract - もちろんそれはです。

そして、最初はコンパイラや言語そのものによって基本的に禁止されています。

0

あなたの質問に対する答えは、親クラスで宣言されたメソッドの可視性を減らすために行うことはできません。

抽象的な親クラスで「メソッドの追跡」を行うことで達成しようとしていることを再確認できれば、別の解決策が得られる可能性があります。

関連する問題