はじめに
Java はオブジェクト指向言語です。 Java を学んだことのある人なら誰でも、カプセル化、継承、ポリモーフィズムがオブジェクト指向の 3 つの特徴であることを知っています。初めて継承を学ぶとき、誰もが多かれ少なかれ、「継承はクラスの再利用を実現するのに役立つ」という印象を持つでしょう。したがって、多くの開発者は、コードを再利用する必要がある場合、自然にクラス継承を使用します。これは、本にそのように書かれているためです (これが教師の教え方です)。しかし、これは実際には間違いです。継承を広範囲に長期的に使用すると、コードに高額なメンテナンスコストが発生します。
実際、私は初めて Java を学んだとき、組み合わせという用語を聞いたことがありませんでした。そして、私自身もいくつかの知識を見逃しているのではないかと常に思っていました。実際には、そうではありませんでした。読者はこの言葉に触れたことがあると思いますが、この名前があることは知りません。
実際、いわゆる組み合わせとは、作成してデバッグしたクラスを呼び出す新しいクラスを作成することです。この新しいクラスを組み合わせと呼ぶことができます
たとえば、People
public class People { private String name; private int age; 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; } }
を作成します。
次に、このクラスを使用したいと思います。この時点で、新しいクラスを作成し、このクラスに People オブジェクトを作成できます。
たとえば、Student
class Student { People people = new People(); }
という名前のクラスを作成します。その後、このクラスに、アイデンティティを学生として定義するなど、いくつかの属性を追加できますが、これについてはここでは説明しません。
次に、継承について見てみましょう。実は、継承と結合は同じ目的を持っています。まず継承について見てみましょう。
Javaにはextendsと呼ばれるキーワードがあり、継承するのに役立ちます。継承されたクラスは親クラス、基本クラス、またはスーパークラスと呼ばれ、継承者はサブクラスまたは派生クラスなどと呼ばれます。
ここでクラスを定義します
public class Student extends People{ //doSomething }
このように、クラスは親クラスのすべてのメンバーメソッドとメンバー変数を継承しますが、プライベート権限として宣言されたフィールドまたはメソッドは継承されないことに注意してください。
これを証明するために、学生クラスにメソッドを書きます
public String re(){ return this.name; }
コンパイラは「People.nameが表示されません」というエラーを報告します。ここから、フィールドまたはメソッドがプライベートとして宣言されていることがわかります。継承したい場合は、private を protected に変更すると、name フィールドが正常に継承されます。
このようにして、People のすべてのフィールドを初期化し、このコード ブロックをコードに追加するだけです
{ this.age = 10; this.name = "zhangsan"; }
その後、メイン関数で生徒を宣言します
Student student = new Student(); System.out.println(student.getAge());
今、この書き方を見つけて驚きましたサブクラスでフィールドやメソッドを宣言していませんが、 getAge(); を呼び出して 10 をスムーズに出力できます。これは、サブクラス メソッドでフィールドやメソッドをオーバーロードしていないためです。このとき親クラスのgetAgeが呼び出され、親クラスがプライベートに宣言したフィールドに簡単にアクセスできるようになります。
デモでは、まず Temp1、Temp2、Temp3 の 3 つのクラスを宣言します。同時に、Temp3 は Temp2 を継承し、Temp2 は Temp1 を継承します。この場合、各クラスの構築メソッドに print ステートメントを入れます。
ここでは便宜上このように書きましたが、各クラスの構築メソッドにこれらが配置されていることに皆さん注意してください。
//Temp1 System.out.println("i'm temp1"); //Temp2 System.out.println("i'm temp2"); //Temp3 System.out.println("i'm temp3");
コンソールを見て出力します
public class Mian{ public static void main(String[] args){ Temp3 temp3 = new Temp3(); } }
これから、最初に temp3 オブジェクトを作成し、extends キーワードを見つける必要があることがわかります。次に、継承チェーンを上に進み、temp2 を見つけ、extends キーワードを見つけ、次に temp1 を見つけ、temp1 のコンストラクターを呼び出し、それを 1 つずつ呼び出します。
概要
上記がこの記事の全内容です。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。ご質問がある場合は、メッセージを残して連絡してください。
Java の継承と結合の簡単な分析に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。