[解決済み] Java コンストラクタ継承
2022-04-22 17:51:36
質問
javaではなぜコンストラクタが継承されないのでしょうか?このようなクラスがあるとします。
public class Super {
public Super(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){
this.serviceA = serviceA;
//etc
}
}
を継承した場合、その後に
Super
の場合、java はデフォルトのコンストラクタが定義されていないことを訴えます。解決策は当然、次のようなものです。
public class Son extends Super{
public Son(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){
super(serviceA,serviceB,serviceC);
}
}
このコードは繰り返しが多く、DRYではなく、役に立たない(IMHO)...ということで、また疑問が湧いてきました。
なぜjavaはコンストラクタの継承をサポートしないのですか?この継承を認めないことによるメリットはあるのでしょうか?
解決方法は?
仮にコンストラクタ は を継承した場合、すべてのクラスは最終的にObjectから派生することになります。 すべての クラスはパラメータなしのコンストラクタを持つことになります。それはまずい。いったい何を期待してるんだ。
FileInputStream stream = new FileInputStream();
を行うか?
現在、かなり一般的になっている "パススルー" コンストラクタを簡単に作成する方法があるはずですが、私はこれをデフォルトにすべきではないと考えています。サブクラスを構築するために必要なパラメータは、スーパークラスが必要とするパラメータとは異なることが多いからです。
関連
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] C#でベースコンストラクタを呼び出す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java の例外が発生しました java
-
IllegalArgumentException この例外を解決する方法
-
Dateが型に解決できない問題を解決する
-
javaで非静的な解を静的な参照にすることができない
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
Javaエラーメッセージがenclosingクラスでない
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
ローカルリソースのロードが許可されていない場合の解決策