序文
静的コードは、静的によって変更されたメンバーはすべてクラスメンバーであり、JVMがクラスをロードするときに実行されるため、非静的コードよりも優先されます。 Staticによって変更されていないメンバーは、インスタンスメンバーとも呼ばれます。オブジェクトは、ヒープメモリにロードできる前に作成する必要があります。したがって、静的は非静的に好まれます。
コンストラクター(建設方法)を実行する場合、メソッド本体を実行する前に3つの暗黙の手順があります。
1.スーパーステートメントには、次の3つの状況がある場合があります。
1)コンストラクターの最初の行はこのステートメントであり、暗黙の3つのステップは実行されません。
2)コンストラクター本体の最初の行はスーパーステートメントであり、対応する親クラスのコンストラクターが呼び出されます。
3)コンストラクター本体の最初の行は、このステートメントでもSuperステートメントでも、Super()は暗黙的に呼ばれません。つまり、親クラスのデフォルトコンストラクターであるため、親クラスは通常デフォルトのコンストラクターを提供する必要があります。
2。非静的変数を初期化します。
3.コードブロックを作成します。
このことから、構造コードブロックが構造方法のメソッド本体よりも優先されることがわかりますが、このキーワードとスーパーキーワードは同時に表示されず、コードの最初の行にのみ表示できます。このキーワードが表示されている場合、暗黙の3つのステップは実行されません。
まず次のクラスを見てから、出力を判断します。
パブリッククラスA {static {system.out.print(1); } public a(){system.out.print(2); }} public class bはa {static {system.out.print( "a"); } public b(){system.out.print( "b"); }} public class c {public static void main(string [] args){a a = new b(); a = new b(); }}親クラスと子のクラスの実行順序
静的変数の実行特性
メソッドオーバーライドに関するメモ
1.親と子の両方のクラスに静的コードブロックとコンストラクターがある場合、実行順序は次のとおりです。
親クラスの静的コードブロック>サブクラス静的コードブロック
親クラスコンストラクター>サブクラスコンストラクター(最初に父親がいます、次に子供がいます)
それがマルチレベルの相続関係である場合、最高レベルの親クラスが最初に実行され、次に順番に減少します。
概要:静的実行が望ましい、親クラスの実行が望ましい
注:JVMがクラスをロードすると、静的コードブロックが実行され、静的コードブロックは1回だけ実行されます。
2。メソッド本体を実行する前に、クラスでメソッドを呼び出すとき、クラスのメンバー変数を最初に割り当てる必要があります。コードに特定の値が割り当てられていない場合、デフォルト値もあります。メンバー変数の割り当て順序は、前後に順序で実行されます。
直接割り当てとコンストラクターの両方の割り当てがある場合は、順番に実行します
3。オーバーライド(オーバーライド)過負荷(オーバーロード)
オーバーロードはメソッド名であり、返品タイプは同じであり、唯一の違いはメソッドパラメーターが異なることです(パラメータータイプが異なるか、パラメータータイプが異なる)
リライト:
多型:
親クラスの参照は、サブクラスのオブジェクトを指します。呼び出されたときに実行される方法は、サブクラスの方法でもあります。親クラスの方法は実行されません。
いわゆる多型は、親クラスまたはインターフェイスタイプの参照が、インターフェイスを実装するクラスのサブクラスまたはインスタンス(オブジェクト)を指すことができることを意味します。
上記の指示を読んだ後、上記のプログラムの出力結果も知っている必要があります。
出力の結果は次のとおりです。1A2B2B
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。