2013-02-15 16 views
5

私のクラスでは、クラスがabstractであることがわかりましたが、それはconcreteクラスから派生しています。そして何?なぜ私はそうすることができないのですか?これは私のニーズに非常によく合います。クラスがコンパイルできるので、それは単なる警告です。それがなぜ私にこの警告を与えるのか興味があるだけです。ありがとうございました。コンクリートクラスから派生した抽象クラス

更新

私はいくつかの説明をして私の質問を拡張する必要があります。私はこのクラスを他のクラスから派生させており、誰もそれをインスタンス化できないようにしたい。さらに、私はこの抽象クラスから2つのサブクラスが必要であり、それぞれに抽象メソッドを1つ実装する必要があります。それが理由です。

悪い考えですか?代わりに私はどのようなアプローチをとるべきですか?

+0

それが悪いデザインですについて気にする理由を説明しているように。 – Azodious

+0

これは継承ではなく構成を求めるようです。 –

+0

ユースケースについてより正確な情報を提供できますか?あなたが話しているクラスは何ですか?あなたは悪いデザインをしているかもしれませんし、単純に仕事に間違ったツールを使っているかもしれません--qbenの答えも見てください。 –

答えて

3

私は、抽象クラスは通常、サブクラスを作成するための基本的な動作や情報を提供すると考えています。そのような決定を下す一方で、他のプログラマーを考えてみてください。他の人はそれを期待していません。

とにかく、このタイプの「問題」に対して警告を出さないようにコンパイラ設定を設定することができます。

更新

あなたの更新を読んだ後、私は最も簡単な方法は、このクラスのconstructor protectedを宣言することだと思います。 抽象メソッドの場合は、単純にoverrideをサブクラスから呼び出すことができます。

+0

いいえ、子クラスが別のパッケージにあるため、保護されたコンストラクタを使用できません。 – Eugene

2

これは可能です。だからこそあなたは警告を受け取り、誤りはありません。

これは一般的なケースで、通常、システムアーキテクチャが不良であることを示しています。コンパイラが警告を表示する理由です。

0

Javaコンパイラの警告は、正常に実行されてはならないことを示すためのものであり、将来的にはプログラマがバグを取得する可能性があります。

See this linkそれはIMO、警告