JAVAオブジェクト向けの多態性および抽象クラスとインタフェース


一:ObjectクラスObjectクラスはすべてのJavaクラスのベースクラス(「祖先クラス」)クラスの宣言でextendsキーワードを使用してベースクラスを指定しない場合、デフォルトのベースクラスはObjectクラス1.toString()メソッドです.
Objectクラスには、現在のオブジェクトに関する情報を記述するStringタイプの値を返すpublic String toString()メソッドが定義されています.
オブジェクトのリファレンスを直接印刷すると、デフォルトではオブジェクトのtoString()メソッドが呼び出され、デフォルトでは、そのリファレンスが指すメモリアドレスが印刷されます.必要に応じてユーザーカスタムクラスでtoString()メソッドを書き換えることができます.2.equals()メソッド
Objectクラスにはpublic boolean equals(Object obj)メソッドが定義され、オブジェクトが「等しい」かどうかを定義する論理が提供されます.
Objectのequalsメソッドは、x.equals(y)と定義され、xとyが同じアドレスを指す場合trueを返し、そうでない場合falseを返します.
Stringクラスではequals(Object obj)メソッドが書き換えられており、書き換え後のメソッドは2つの文字列の「内容」が同じかどうかを比較しています(注意:==比較オブジェクトの参照).
必要に応じてequalsメソッドをユーザーカスタムタイプに書き換えることができます.
二:多態性
カプセル化は属性を保護するための操作であり,継承はクラスの機能を拡張するためである.
パッケージ性と継承性から引き出されるオブジェクト向けプログラム設計言語のもう一つの特徴である.
方法の観点から見ると、方法のリロードと書き換え
リロード(overloading):入力されたパラメータによって、完了する機能も異なります.
書き換え(override):サブクラスは、必要に応じて親クラスのメソッドを書き換えます.
instanceofキーワード
Javaではinstanceofキーワードを使用して、オブジェクトがクラスに属しているかどうかを判断できます.
フォーマット:オブジェクトinstanceofクラスはbooleanタイプを返します
finalキーワード
JAVAでクラス、属性、メソッドを宣言する場合は、キーワードfinalを使用して修飾できます.注意:
1.final修飾変数(メンバー変数またはローカル変数)は、定数となり、1回のみ付与できます.
final      variableName;
メンバー変数を修飾する場合、定義時に初期値が同時に与えられ、ローカル変数を修飾する場合は要求されません.
2.final修飾メソッドの場合、このメソッドはクラスによってfinal戻り値タイプmethodName(paramList){...}を書き換えることはできません.
3.final修飾クラスの場合、クラスはfinal class finalClassNameを継承できません{...}
三:抽象クラスとインタフェース
abstractで修飾されたクラスは抽象クラスabstract class抽象クラス名{}である.
抽象クラスはインスタンス化されず、継承されなければならず、抽象メソッドは書き換えられ、そのサブクラスを生成しなければならない.abstractによって修飾される方法は抽象的な方法であり,抽象的な方法には方法体がない.
抽象クラスには抽象メソッドが含まれる必要はありません.クラスに抽象メソッドが含まれている場合は、クラスを抽象クラスとして定義する必要があります.
サブクラスが抽象親クラスのすべての抽象メソッドを実装していない場合、サブクラスも抽象クラスになります.
構築メソッド、静的メソッド、プライベートメソッド、finalメソッドは抽象的なメソッドとして宣言できません.インタフェース:インタフェース(interface)は抽象メソッドと定数値の定義の集合です.
インタフェースは「標準」「契約」です.
本質的には、インタフェースは特殊な抽象クラスであり、この抽象クラスには定数とメソッドの定義しか含まれず、変数とメソッドの実現はありません.
インタフェースの宣言構文
インタフェース宣言とインタフェースボディを含む
完全なインタフェース宣言:
[public]interfaceインタフェース名[extends listOfSuperInterface]{...}
インタフェースボディには、定数定義とメソッド定義が含まれます.
    : type NAME=value;                 ;   public ,final, static   .

     :   public abstract  
インタフェースの実装クラス:抽象クラスと同様に、インタフェースを使用するにはサブクラス、サブクラスはimplementsキーワードでインタフェースを実装する必要があります.
1つのクラスは複数のインタフェースを実現し、implements句でカンマで区切ることができます.
非抽象サブクラスは、インタフェースで定義されたすべてのメソッドを実装する必要があります.
実装形式:classサブクラスimplementsインタフェースA,インタフェースB...{}
インタフェースの使用規則:
インタフェース内のすべての方法はpublic abstractです.インタフェースでメソッドを宣言する場合、static、final、synchronized、private、protectedなどの修飾子は使用できません.1つのインタフェースは、別のインタフェースから継承できます.JAvaではクラスのマルチ継承は許可されていませんが、インタフェースのマルチ継承は許可されています.
インタフェースには、public static finalインタフェースのデフォルトで使用されるデータ・メンバーがあります.
(1)               ,             .
(2)                
(3)             ,