まず、3つの主要な機能の定義について簡単に説明しましょう。
カプセル化:オブジェクトのプロパティと実装の詳細を隠し、インターフェイスを外の世界にのみ公開し、プログラム内の読み取りおよび変更のアクセスレベルを制御します。抽象化されたデータと動作(または関数)を組み合わせてオーガニック全体を形成します。つまり、データと機能が操作データのソースコードと有機的に組み合わせて、データと機能がクラスのメンバーである「クラス」を形成します。カプセル化の目的は、セキュリティを強化し、プログラミングを簡素化することです。ユーザーは特定の実装の詳細を理解する必要はありませんが、特定のアクセス許可を使用して、外部インターフェイスを介してクラスメンバーを使用するだけです。カプセル化の基本的な要件は、すべての属性を民営化し、各属性にゲッターとセッターのメソッドを提供することです。パラメーターを備えたコンストラクターがある場合は、パラメーターのないコンストラクターを記述する必要があります。開発中は、多くの場合、すでに書かれたクラスをテストする必要があるため、ToStringメソッドを書き換えることができますが、これは必要ありません。
継承:継承を通じてコードの再利用を有効にします。 Javaのすべてのクラスは、Java.lang.Objectクラスを直接または間接的に継承することによって取得されます。継承されたクラスはサブクラスと呼ばれ、継承されたクラスは親クラスと呼ばれます。サブクラスは、アクセス許可がプライベートである親クラスのメンバー変数とメソッドを継承することはできません。サブクラスは、親クラスと同じ名前で親クラスのメソッドと名前のメンバー変数をオーバーライドできます。ただし、Javaは複数の継承をサポートしていません。つまり、クラスが複数のスーパークラスから派生する能力をサポートしていません。開発では、継承関係が最小化され、これはプログラムの結合度を減らすために行われます。
多型:多型は、設計時間の多型とランタイム多型に分けられます。たとえば、過負荷は設計時間多型とも呼ばれます。メソッドをオーバーライドまたは継承するために、Javaランタイムシステムは、ランタイム多型と呼ばれるメソッドと呼ばれるインスタンスのタイプに基づいて呼び出す方法を決定します。要するに、オブジェクト指向の設計の典型的な特性は、継承、カプセル化、多型であり、オブジェクト指向の人気の鍵でもあります。
パッケージ
Javaのクラス属性のアクセス権のデフォルト値はプライベートではありません。この属性のメソッドを非表示にする場合は、クラスのみへのアクセスを制限するためにプライベート修飾子を追加できます。
クラス内のプライベート属性の場合、プライベート属性の操作とセキュリティを確保するために、プライベート属性にアクセスするために、一対のメソッド(getxxx、setxxx())を指定する必要があります。
メソッドのカプセル化、開示の開示、隠された隠されたもの。
Java相続
継承は、1つのクラスに共通の特性を持つ複数のタイプのものを抽象化することです。
Javaの継承は、Extendsキーワードを使用する必要があり、Java中指は単一の継承を許可します。つまり、クラスには1つの親クラスのみを持つことができます。
コンストラクターを継承することはできません。
Javaメソッドをオーバーライドします
サブクラスに、親クラスでアクセスできるのと同じ名前と同じパラメーターリストを返す方法がある場合、親クラスから継承されたメソッドが上書きされます。
super()キーワード
Super()とは、サブクラスのコンストラクターが親クラスのコンストラクターを呼び出す場合、Super()はコンストラクターの最初の文にのみ存在できることを意味します。
Javaの多型
コンパイル時間の多型とランタイム多型の2つの多型メカニズムがあります
1。メソッドオーバーロード:オーバーロードとは、同じクラスで同じ名前の複数のメソッドを指しますが、これらのメソッドには異なるパラメーターがあります。 、したがって、コンパイル時にどの方法を呼び出すかを決定できます。これは、コンパイル時間の多型です。
2。メソッドオーバーライド:サブクラスは親クラスのメソッドをオーバーライドできます。そのため、同じ方法では、親クラスとサブクラスに異なる症状があります。 Java言語では、基本クラスの参照変数は、基本クラスのインスタンスオブジェクトだけでなく、サブクラスのインスタンスオブジェクトを指すことができます。同様に、インターフェイス内の参照変数は、実装クラスのインスタンスオブジェクトを指すこともできます。
パブリッククラスA {public String show(d obj){return( "a and d");} public string show(a obj){return( "a and a");}} public class bは{return( "b and b");} public string show(a obj){return( "b and b");} public class c public class c; b {} public class test {public static void main(string [] args){a1 = new a(); a2 = new b(); b b = new b(); c c = new c(); d d = new d(); System.out.println( "1--" + a1.show(b)); system.out.println( "2--" + a1.show(c)); system.out.println( "3--" + a1.show(d)); system.out.println( "4--" + a2.show(b); system.out.println( "5--" 5-- "5--" 5-- "5--" 5-- "5--" 5-- "5--" 5-- "5--" 5-- "5--" 5-- "5--" 5-- "5-- a2.show(c)); system.out.println( "6--" + a2.show(d)); system.out.println( "7--" + b.show(b)); system.out.println( "8--" + b.show(c)); system.out.println( " + b.show(d)); }} 1-- aおよびa2-- aおよびa3-- a and d4-b and a5 - b and a6-a and d7-b and b8-b and b9-a and d SuperClassオブジェクトが変数を参照してサブクラスオブジェクトを参照する場合、参照される変数のタイプではなく参照されるオブジェクトのタイプは、メンバーメソッドが呼び出されるかどうかを決定しますが、呼び出されたメソッドはスーパークラス、つまりサブクラスでカバーされているメソッドで定義する必要があります。
例を使用して、この文の意味を説明しましょう。A2.show(b);
ここで、A2は、Bオブジェクトを指すタイプAの参照変数です。したがって、上記の文によれば、それは誰の方法を呼び出すかを決定するBがあることを意味します。したがって、a2.show(b)はbでshow(b obj)を呼び、結果は「bとb」になるはずですが、なぜ以前の実行結果と違うのですか?ここでは、次の文を無視します。「ここで呼ばれる方法はスーパークラスで定義する必要があります」。まったく存在しません!それで、この文はここには適用されませんか?それで、この文は間違っていますか?いいえ!実際、この文はこの文を暗示しています。継承チェーンの呼び出し方法の優先順位に従って確認する必要があります。そのため、クラスAでショー(A OBJ)を見つけます。同時に、Bはメソッドを上書きするため、クラスBのメソッドを呼び出します。そうしないと、クラスAのメソッドが呼び出されます。
上記は、Javaのカプセル化、相続、およびあなたに紹介された多型の3つの主要な特徴の理解です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!