[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
2022-02-24 01:21:25
質問
このようなコンパイラーエラーが発生しました。
継承したメソッドの可視性を下げることはできません。
私は以下のコードを持っています。
class Parent {
public void func() {
System.out.println("in Parent");
}
}
public class TestClass extends Parent {
public static void main(String args[]) {
parent obj=new TestClass();
obj.addTest();
}
private void func() {
System.out.println("in child");
}
}
ここで親クラスは
func()
メソッドはパブリックであり、サブクラスによってオーバーライドされます。
TestClass
であり、プライベートである。現在、コンパイラは、私は可視性を減らすことができないというエラーをスローします。技術的なことを言うと、私が
TestClass
は親オブジェクトの型に割り当てられているので
func()
メソッドがオーバーライドされているので、TestClass の func() は常に呼び出されることになります。誰かが私を明確に説明することができますか?
解決方法は?
これは、サブクラスが
private
に対して
void func()
メソッドがありますが、スーパークラスには可視性
public
.
もしあなたのコードがコンパイル可能であったとしても、こんなことをしたら実行時に爆発してしまうでしょう。
parent p = new TestClass();
p.func(); // boom - func is public in parent, but TestClass's impl is private, so no access would be allowed
これを修正するために、サブクラスの
func
メソッド
public
:
public class TestClass extends parent {
...
public void func() { // give it public visibility
System.out.println("in child");
}
}
また、標準的な命名規則を使用してください。
クラスは大文字で始める必要があります。
- すなわち
Parent
ではなく
parent
関連
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] 午前0時からの時間を秒単位で取得する方法
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] javaでメソッドを呼び出すプログラムのエラー修正
-
[解決済み] init-paramとcontext-param
-
[解決済み] GsonでList<T>オブジェクトをデシリアライズする?
-
[解決済み】サブクラスはプライベートフィールドを継承するのか?
最新
-
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でFileFilterを作るには?
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] Java UnknownFormatConversionException
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] スリーピング中のスレッドが割り込まれ、データベースへの接続が失われる
-
[解決済み] Javaでdoubleをfloatに変換する