この記事は、主にJavaプログラミングの多重化クラスを研究しています。では、多重化されたクラスとは何ですか?その使用法は何ですか?詳細な紹介です。
Luo Luo Shengyangとのインタビューを読んだ後、私は彼を賞賛せざるを得ませんでした。彼はとても若かった。私はLuo Yonghaoと同じ年齢だと思っていましたが、中学校ではない高校のプログラミングではない大物の1人に会いました。インタビューの後、私はルオルオが一度に一歩ずつ進んだ人でもあることを発見しました。やるのが難しいとは言わないでください。あなたはそれを試したり、固執しませんでした。
飛ぶことができない場合は走ることができない場合、走ることができない場合は歩いて、歩くことができない場合はcraいますが、
あなたが何をするにしても、あなたは前進し続けなければなりません - マルティン・ルーサー・キング。
再利用クラスのタイトルは、最初は理解するのが困難でした。後で私は本の元の英語版を読みに行きました。実際、タイトルはクラスの再利用であり、クラスを再利用することは「既製のものを使用する」ことを意味しました。実際、実装の2つの方法は、Javaの組み合わせと継承でよく聞かれます。
(1)組み合わせ
Has-Aの役割。
パブリッククラスTV {Show Show; public string toString(){return "showgirl"; }} class show {} ToStringメソッドに言及しましょう。文字列が必要で、オブジェクトである場合、コンパイラはオブジェクトのトストリングメソッドを呼び出します。
テレビにショーがあります。現在のショーは初期化されておらず、nullです。ショーメソッドは呼び出すことはできません。
この組み合わせは強力な効果があります。オブジェクト指向の観点からは、車のクラスを作成している場合、組み合わせを使用してガラス、光、エンジン、その他の自動車コンポーネントを簡単に組み合わせることができます。
(2)継承
is-a
パッケージcom.myown.iaiti; public class father {public int i; void get(){system.out.println( "father");}} package son; import com.myown.iaiti。*; public class son {父f = new父(); int j = son = son = new son(); son.get();} public void();} get(){super.get(); system.out.println( "son");}}ここでは、パッケージアクセス許可に問題があります。パブリックが追加されていない場合、デフォルトはパッケージ内のメンバーにアクセスすることです。さまざまなパッケージアクセス、つまり、息子の父親のメンバーのアクセス方法は見えません。そして、公共の言葉が見えるので、アクセスが取得されます。
プライベートな部分は継承することはできず、親クラスのプライベートに属しますが、公共の部分は継承され、変更する必要がある方法を書き直すことができます。追加する属性は個別に追加できます。
さらに、元の親のパブリック方法が書き直されている場合、元の父親のパブリック方法が公開されない場合、父親からの継承された方法の可視性を減らすことはできません。スーパーは、親のクラス、すなわち父親を指します。
もう1つの点は、実際には、Javaのすべてのクラスがオブジェクトクラスを暗黙的に継承することです。オブジェクトは親クラスであり、他のクラスはサブクラスです。外国人はそれについて基本クラスとして話すのが好きです。サブクラスは、エクスポートクラスまたは派生クラスとも呼ばれます。
(3)エージェント
設計モデルでは、エージェントモデルで理解するのが比較的難しい方法があります。著者はそれについて非常に興味深いことについて話します。エージェントは、組み合わせと相続の平均の教義です。
パッケージ息子;クラス父{public void get(){system.out.println( "父"); }}パブリッククラスの息子は父親を拡張します{public static void main(string [] args){父f = new父(); f.get(); }} class fathproxy {private father f = new父(); public void get(){f.get(); }}父親を直接メンバーとして扱う場合、父の方法はこのクラスにさらされます。その後、父親プロキシなどのプロキシクラスを使用できます。 Get Methodを自分で取得する方法を定義します。私はそれが父親のget方法を呼んでいることを知っていますが、私の代理を使用する人は知りません。私は彼に、あなたがそれを使用したい場合は、プロキシのGETメソッドを使用するだけだと言います。カプセル化が反映されます。上記は、ランダムノックの単純な例です。
(4)書き換えてリロードします
クラス父{public void get(string s){system.out.println( "father"); } public void get(boolean b){system.out.println( "boolean"); }}パブリッククラスの息子は父親を拡張します{@override public void get(string s){system.out.println( "father"); } // @Override //エラーメッセージがあります。親クラスにはこの方法がないため、パブリックボイドget(int i){system.out.println( "sonint"); } public static void main(string [] args){son s = new Son(); S.get( "d"); S.get(false); S.get(1); }}書き換えは、親クラスの方法を再オーバーすることです。書き換えや過負荷がない場合、サブクラスがサブクラスにない方法を呼び出すと、実際には親クラスを呼び出しています。
オーバーロードは同じメソッド名ですが、パラメーター名は異なります。誤って過負荷をかけないようにするために、@Overrideタグを追加できます。これにより、メソッドを書き換えていないことが促されます。
(5)保護されています
Javaプログラミングアクセス許可の制御コードの詳細な説明
以前に相続について話しなかったので、前の記事を事前に書きました。
保護されていることは、親クラスの息子への相続と見なすことができ、他の非相続クラスにアクセスできません。
(6)最終キーワード
最終キーワードの基本タイプを追加すると、この変数が初期化後に変更されないことを意味します。 C定義と同様に、このプログラムの変数を変更せずにこの値にする必要があります。ファイナルを使用できます。
パブリッククラスの息子{int age = 2; public static void main(string [] args){final int i = 1; // i = 2;値を変更することはできなくなりましたが、最後の息子息子= new Son(); // son = new Son(); //最後のローカル変数SONを割り当てることはできません。 //空白である必要があり、複合割り当てを使用しないでください//最終的に変更されたローカル変数SONは割り当てられません。 //参照は一定ですが、オブジェクト自体を変更できます。 } void change(final int c){// c = this.age;値は、メソッドがパラメーターを渡し、オブジェクト参照がこの// age ++に類似している場合にのみオブジェクト参照を決定するため、新しい値を割り当てることはできません。変更できません}}静的はもともと静的初期化であり、変更できないストレージスペースを占めるために最終的に使用されます。
静的ファイナルは、編集期間中の定数です。一定の名前は、cの定数に従って伝統的に命名されています。すべてが大文字であり、言葉はアンダースコアによって区切られています。
静的最終value_one = 1;
最終的な方法を変更するとき
public class print {final void can cangeprint(){system.out.println(1); }} public class printson extends print {// void cantableprint(){} //最終的なpublic static void main(string [] args){printson ps = new Printson(); ps.cannotprint(); }}親クラスが子のクラスが継承しなければならないことを要求することは、変更されていない財産(先祖相続)と見なすことができます。プライベートはファイナルとして暗黙的に指定されています。なぜなら、プライベートはあなたに継承をまったく与えないためです。これは、相続財産を与えるよりもプライベートですが、変更しません。
ちなみに、権限をクリアします。
最終的なクラスを修正する場合、このクラスが継承されないようにします。
(7)継承と初期化
ここでの順序の問題は興味深い質問です。例を参照してください。
クラスの祖父{private static int i = print(); private static int print(){system.out.println( "g");返品1; }}クラスの父親は祖父を拡張します{private static int i = print(); private static int print(){system.out.println( "f");返品1; }}パブリッククラスの息子は父親を拡張します{private static int i = print(); private static int print(){system.out.println( "s");返品1; } public static void main(string [] args){system.out.println( "first"); }}印刷の結果は最初ですか?間違っている。
主な方法は実行されますが、静的初期化が必要な息子はそれを持っていませんが、結果は最初にありますか?
初期化の問題もあります。息子は父親を継承するので、コンパイラは父親をロードしてiを初期化します。父が祖父を継承する場合、コンパイラーは再帰と同様に祖父を積み込みます。
初期化された最後のものは祖父のiです。
したがって、最終結果は、g、f、s、firstです。
要約します
上記は、この記事のJavaプログラミングマルチプレックスコードのすべての詳細な説明です。すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!