ホームページ  >  記事  >  Java  >  Java の継承と構成の簡単な分析

Java の継承と構成の簡単な分析

高洛峰
高洛峰オリジナル
2017-01-21 16:37:311257ブラウズ

はじめに

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 ステートメントを入れます。


ここでは便宜上このように書きましたが、各クラスの構築メソッドにこれらが配置されていることに皆さん注意してください。

メイン関数で Temp3 オブジェクトを作成します

//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 サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。