序文
Javaはオブジェクト指向の言語です。 Javaを学んだすべての人は、カプセル化、相続、および多型がオブジェクト指向の3つの特徴であることを知っています。誰もが相続財産を学んだとき、彼らは多かれ少なかれ、相続が私がクラスの再利用を実現するのに役立つという印象を持っているでしょう。したがって、多くの開発者は、いくつかのコードを再利用する必要があるときにクラスの継承を自然に使用します。これは本が書かれているものだからです(これは教師が教えるものです)。しかし、これを行うのは実際には間違っています。継承の長期的な大規模な使用は、コードに高いメンテナンスコストをもたらします。
実際、私が最初にJavaを学んだとき、私は用語の組み合わせについて聞いたことがなく、教師はそれを説明しませんでした。私はいつもいくつかの知識ポイントを失ったと思っていましたが、そうではありませんでした。この用語の組み合わせは、当面の間、思考のものとして定義する必要があります。読者がそれに接触したと思いますが、この名前があることはわかりません。
実際、いわゆる組み合わせは、作成されてデバッグされたクラスを呼び出すための新しいクラスを作成することです。そのため、この新しいクラスは組み合わせと呼ぶことができます
たとえば、私は人々を作ります
パブリッククラスの人々{プライベート文字列名;プライベートインクエイジ; public void setName(string name){this.name = name; } public string getname(){return this.name; } public int getage(){return this.age; } public void Setage(int age){this.age = age; }}それから私は今このクラスを使いたいです。このクラスにいくつかの新機能を追加できます。この時点で、新しいクラスを作成してから、このクラスで人々のオブジェクトを作成できます。
たとえば、私は現在、学生と呼ばれるクラスを作成しています
クラス学生{人の人々=新しい人();}次に、学生としてのアイデンティティを定義するなど、このクラスにいくつかの属性を追加できますが、ここでは説明しません。
次に、相続を見てみましょう。実際、継承と組み合わせは似ています。まず、それがどのように継承されるかを見てみましょう。
JavaにはExtendsと呼ばれるキーワードがあります。これは、継承するのに役立ちます。継承クラスの親クラス、基本クラス、スーパークラス、および相続人はすべて大丈夫です。
ここでクラスを定義します
パブリッククラスの学生は人々を拡張します{// dosomething}このようにして、クラスは親クラスのすべてのメンバー方法とメンバー変数を継承しますが、プライベート許可として宣言されたフィールドまたは方法は継承されないことに注意してください。
これを証明するために、学生クラスに方法を書きます
public string re(){return this.name;}ここで、コンパイラは「people.nameが表示されない」エラーを報告します。ここから、プライベートとして宣言されたフィールドまたは方法を継承できないことがわかります。継承したい場合は、プライベートを保護して変更できます。このようにして、名前フィールドをスムーズに継承できます。
このようにして、人のすべてのフィールドを初期化し、このコードブロックをコードに追加するだけです。
{this.age = 10; this.name = "Zhangsan";}次に、この学生をメイン関数で宣言します
学生学生= new Student(); system.out.println(student.getage());
今、私たちはこの執筆方法が実現可能であることに驚いた。サブクラスのフィールドとメソッドを宣言しませんでしたが、getage()を呼び出すことはできます。そして、10個をスムーズに印刷できます
これは、サブクラスのメソッドを過負荷にしないため、親クラスのgetageを呼び出すため、親クラスがプライベートで宣言したフィールドに簡単にアクセスできるためです。
これらを読んだ後、私は誰もが相続について予備的な理解を持っていると信じています。それでは、継承メカニズムでは、各クラスの構築方法はどのように呼ばれますか?答えは、親クラスからチャイルドクラスまで順番にそれらを呼び出すことです。
デモをしている間、私は最初に3つのクラスTemp1、Temp2、およびTemp3を宣言します。同時に、TEMP3はTEMP2から継承し、TEMP2はTEMP1から継承します。このようにして、各クラスの建設方法に印刷されたステートメントを入れます。
//temp1system.out.println("i'm temp1 "); // temp2system.out.println(" ime temp2 ");便利なため、ここにこれを書きましたが、誰もが各カテゴリの建設方法に配置されているという事実に注意を払わなければなりません。
メイン関数でTEMP3オブジェクトを作成します
public class mian {public static void main(string [] args){temp3 temp3 = new Temp3(); }}コンソールを見て印刷しました
私はtemp1i'mmp2i'm temp3です
このことから、最初にTEMP3のオブジェクトを作成し、キーワードを拡張し、継承チェーンに従い、TEMP2を見つけ、拡張キーワードを見つけてからTEMP1を見つけてから、TEMP1のコンストラクターを呼び出してから1つずつ呼び出す必要があることがわかります。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容があなたの研究や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。