final
というキーワードを使用しないとどうすればいいですか?コンストラクタに何を変更する必要がありますか?最後のキーワードを使用せずにクラスを拡張できないようにするにはどうすればよいですか?
public final class testName {
testName() {
//do something
}
}
final
というキーワードを使用しないとどうすればいいですか?コンストラクタに何を変更する必要がありますか?最後のキーワードを使用せずにクラスを拡張できないようにするにはどうすればよいですか?
public final class testName {
testName() {
//do something
}
}
すべてのあなたのコンストラクタprivate
を行った場合、そのクラスにも、もはや拡張できなくなります。
理由を確認するには、セクション3.4.4.1、'The default constructor'を確認してください。
このような[プライベート]コンストラクタは、クラスの外部から呼び出されることはありませんが、それはデフォルトコンストラクタの自動挿入を防止:あなたのプライベート既定のコンストラクタを宣言することで、段落の最後の文を保持します。
だから、効果的にアクセスすることはできませんスーパークラスでコンストラクタを宣言することによって、あなたのサブクラスが呼び出すことができますので、Javaはコンパイルを防ぐなし(他の)コンストラクタがありません。
「//何か」のコメントに挿入されたコードによってコンストラクタが失敗する場合は、例外をスローします。
その他のオプション - 最終クラスまたは専用コンストラクタ - は一般的に、実行時ではなくコンパイル時にエラーを報告するため、より良い選択肢です。しかし、障害が条件付きであるべき場合、または誰かがあなたの知識をテストしている場合は、例外を投げるのが通常の方法です。
[専門家の質問:コンストラクタが例外をスローすると、新しく作成されたインスタンスへの参照でプログラムが終了する可能性がありますか? (ヒント:はい)]
できれば私は素晴らしい専門家の質問に対して+10を与えるだろう。ありがとう、ジェフ。 – Raku
このクラスの専用コンストラクタを作成できます。
なぜファイナルを使用しないのですか? – fvu
あなたの動機は何ですか?最終的なキーワードは上記の要件を満たすはずです。あなたはjavaの構文エキスパートになりたいですか? – blowyourheart
はいそれは私が解決しなければならないテストです。 – MoglisSs