(1)静的変数と静的メソッドを継承できるかどうか?
1 クラスの親{ 2つの // 静的変数とメソッドを継承できるかどうか?? 3 。4 パブリック 静的文字列=静的変数親クラスの親クラスの静的変数であるI 『; 5 。6 パブリック 静的 ボイド親クラス静的メソッド(){ 7 のSystem.out.println(』静的メソッド」は、親クラスIである); 8 } 9 10 } 11 12である クラスのサブクラスは延び親{ 13 // 空の 14 } 15の 16 パブリック クラスのテスト{ 17 // 静的変数とメソッドは次の場合に継承することができますか? 18 19 パブリック 静的 ボイドメイン(文字列[]引数){ 20である オブジェクト・サブクラスのサブクラス= 新しい新しいサブクラス(); 21 // オブジェクトサブクラス 22である 23れる サブクラス親クラス静的メソッド(); 24の // サブクラスによって静的メソッドを呼び出すクラス名が継承 25の 26 オブジェクトサブクラス親クラスの静的メソッドを();. 27 // サブクラスがオブジェクトを介して静的メソッドを呼び出す継承 28 29 = _1文字列親クラスの静的変数をサブクラス; 30 // 子静的変数を呼び出すために、クラス名によって継承クラス 31は、 32 のSystem.out.println(「親クラス静的変数のサブクラス======」+ _1); 33である 34れる = _2ストリングサブクラスは親クラス静的変数オブジェクト。 ; 35 //静的変数サブクラスオブジェクトによってコール継承 36 37 のSystem.out.println(「オブジェクトサブクラス静的変数======親クラスが」+ _2); 38 } 39 40 } 41が 42である // コードを結果は以下の通りである 43 Iは、親クラスの静的メソッドである 44 Iは、親クラスの静的メソッドである 45のサブクラス。======親クラス静的変数Iは、静的変数の親である 46のオブジェクトのサブクラス。静的変数親クラス== ====私は、親クラスの静的変数です
上記のコードによると、親クラスの静的変数とメソッドは、サブクラスによって継承することができます。
(2)静的変数を非表示にすることができますか?静的メソッドを書き換えることができますか?
1 クラスの親{ 2つの // 静的変数を非表示にすることができますか??静的メソッドを書き換えることができる 3 4 パブリック 静的文字列親クラス静的変数=「私は親クラス静的変数午前」; 5 6 パブリック 静的 ボイド親クラス静的メソッド(){ 7 のSystem.out.println(「私は父午前クラス静的メソッド「); 8 } 9。 10 } 11 12である クラスのサブクラスが延び親{ 13は パブリック 静的 =可変静的文字列親クラス」I」は、静的変数のサブクラスである; 14 15 パブリック 静的 ボイド親クラス静的メソッド(){ 16 System.out.println(「私は静的メソッドをオーバーライドする子クラス午前」); 17 } 18 19 } 20 21 パブリック クラスのテスト{ 22個の // 静的変数を隠すことができますか?静的メソッドを書き換えることができますか? 23である 24 公共 静的 ボイドメイン(文字列[]引数){ 25の サブクラスのサブクラスオブジェクト= 新しい新しいサブクラス(); 26 // サブクラスオブジェクト 27 28 オブジェクト変換親サブクラスに= 新しい新しいサブクラス(); 29 // サブクラスオブジェクトの変換 30 31は、 親クラスの静的メソッド(のサブクラス);. 32 // オーバーライド呼び出して、クラス名の静的メソッドサブクラス 33は 34であります サブクラスオブジェクトの親クラスの静的メソッド();. 35 // 静的メソッド呼び出しサブクラスオブジェクトオーバーライド 36 37 上部遷移親クラスは、サブクラスオブジェクト静的メソッド(); 38の // 遷移オブジェクトの呼び出しに重量サブクラス静的書き込み方法 39 40 列_1 = サブクラス親クラス静的変数;. 41の // 静的変数サブクラス呼び出して、クラス名のサブクラス 42は 43である のSystem.out.println(親クラスの「サブクラス===静的変数。 ===「+ _1); 44である 45 列_2 = サブクラスオブジェクトの親クラス静的変数;. 46の // 静的変数サブクラスオブジェクト呼び出しサブクラス 47 48 のSystem.out.println(」親サブクラスオブジェクト。静的変数======「+ _2); 49 50 列= _3 。ターゲットサブクラスの親クラス静的変数の変換; 51 // トランジション親オブジェクトによって隠されたサブクラスは、静的変数呼び出し である52 である53 のSystem.out.println(「親クラスのオブジェクトのサブクラスに変換======静的変数」+ ; _3) 54 } 55 56 } 57は、 58 // 次の結果コードを実行する 59 Iは、静的メソッドであるのサブクラスオーバーライド 60の Iサブクラスをオーバーライドする静的メソッドを 61 Iは、親クラスの静的メソッドである 62のサブクラス。====親クラス静的変数== 私は静的変数のサブクラスで 63の ======サブクラスオブジェクト。親クラス静的変数Iは、静的変数のサブクラスである 64オブジェクトサブクラスの形質転換に関する。親クラスの静的変数I ======親クラスの静的変数
ビューの上記のコード・ポイントによって、スタティック変数は、実際にサブクラスオブジェクトおよび静的変数の結果が異なって呼び出すサブクラス上のオブジェクトの変換と、隠されています。静的メソッドを書き換えることができず、隠されている、それは異なる変換対象サブクラスオブジェクトおよびサブクラスの結果と静的メソッドを呼び出します。
私はブログの多くを見直し、結論はこれです:私たちはちょうどこの時に静的変数とランタイムの静的メソッドを使用することになり、静的変数やオブジェクトが実際に無意味であるとの静的メソッドを呼び出すクラスのをそのクラスの静的変数と静的メソッド。
要約すると、親クラスの静的変数、静的メソッドは、同じ名前のサブクラスとサブクラスに継承されます静的メソッドが隠されている静的変数になります。私たちは、コードを見たときに静的な型に属しを判断することができ、静的変数と静的メソッドを呼び出すために見る必要がある、と私たちはより良い呼び出すために静的変数と静的メソッドを使用してクラス名を使用していました。
参考ブログます。https://blog.csdn.net/gao_zhennan/article/details/72892946
https://blog.csdn.net/fcability/article/details/17352109
https://blog.csdn.net/dawn_after_dark/article/details/74357049
Xueshiqianbaoは、間違っていた場合、次は感謝される、論文を懇願します。