インターフェース
(1) 抽象クラスのメソッドが抽象である場合、Java は新しい形式の表現、インターフェースを提供します。インターフェースは関数のコレクションです。インターフェースはオブジェクトを作成できません
(2) 形式
。親インターフェイス: public インターフェイス Tnter{
}
サブクラス: public class interImpimplements Itner{
}
インターフェイスの使用法
1. インターフェイスはオブジェクトを作成できません
2. インターフェイスを実装するための実装クラスを定義します
実装 キーワード 実装
3. 抽象メソッドをオーバーライドする
4. 実装クラスのオブジェクトを作成し、メソッドを呼び出す
インターフェースの特徴
1. 抽象メソッドによる変更の必要がない
2. クラスはインターフェースを実装し、単一または複数の方法で実装できる
3. インターフェイスは、単一継承または多重継承のいずれかでインターフェイスを継承できます
4. インターフェイスと親クラスの関数は繰り返すことができます。つまり、特定の関数を持たなければなりません
インターフェイスのメンバー特性
メンバー変数 静的定数
固定変更 シンボル public static Final
記述してもしなくても、この修飾子は変更されません
メンバーメソッド
固定修飾子 public abstract
記述してもしなくても、この修飾子は変更されません
Abstract クラスとインターフェースの違い
1. メンバーの違い
抽象クラス:
メンバー変数: 変数または定数のいずれかになります
コンストラクター メソッド: サブクラスのインスタンス化のためのコンストラクター メソッドがあります
メンバー メソッド: 抽象にすることもできます はい、非抽象にすることもできます-abstract
インターフェース:
メンバー変数: 定数のみ可能
デフォルト修飾子: public static Final
メンバーメソッド: abstract のみ可能
デフォルト修飾子: public abstract
推奨: デフォルト修飾子 常に手動で与えてください
2.クラスとインターフェースの違い
クラスとクラス:
継承関係、単一継承のみ、多層継承可能
クラスとインターフェース:
実装関係、個別に実装可能、または複数実装可能
クラス1 つのクラスを継承し、同時に複数のインターフェイスを実装することもできます
インターフェイスとインターフェイス:
継承関係、単一継承または多重継承
3. 具現化された概念は異なります
抽象クラスで定義されています それらはすべて共通の内容です継承システム
インターフェースは関数のコレクション、システムの追加関数、および公開ルールです
親クラス/インターフェース参照を使用するすべての場所で、そのサブクラス/実装クラス オブジェクトを渡すことができます
ポリモーフィズム
同じオブジェクト、異なる時点で異なる状態が反映される
例: 水 (水、氷、水蒸気)
cat (猫、動物)
前提条件:
A: 継承または実装関係がある
B: 系統的な書き換え
C: 親クラスから子クラスのオブジェクトへの参照がある
ポリモーフィズムでのメンバーの使用の特徴
Fu fz=new Zi();
ポリモーフィズムでは、すべての式が親クラスである
式は、メソッドが呼び出されると、サブクラスによって書き換えられたメソッドが実行されます
1. メンバー変数
コンパイル時に左側を見て、実行時に左側を見てください
2. メンバーメソッド
コンパイル時に左側を見て、実行時に右側を見てください
1 class Fu{ 2 int num=4; 3 void show(){ 4 system.out.println("showFu") 5 } 6 7 } 8 class Zi extends Fu{ 9 10 int num=5;11 void show(){12 system.out.println("showZi");13 }14 }15 class T{16 public static void main(String args[]){17 Fu f=new Zi();18 system.out.println(f.num);19 f.show();20 }21 }
ポリモーフィズムにおける変換
1. 上方変換
サブクラスオブジェクトを親クラス(インターフェース)の参照に代入し、自動的にpromotion
int a=0;
Fu fz=newと入力します。 Zi();
2 .Downcast
親クラス (インターフェイス) の参照をサブクラス オブジェクトに強制します
double b=10.0;
int a=(int)b;
Fu fz=new Zi();
Zi zi=(Zi )fz;
注: Fu fu=new Fu() はダウンキャストできず、ClassCastException 型変換例外が報告されます
ポリモーフィズムの利点と欠点
1. 利点
プログラムの保守性と拡張性が向上します
2 。欠点
サブクラスの特殊な内容は適用できない
使用したい場合は、サブクラスオブジェクトをダウンキャストするか再作成する必要があります
3 つの形式のポリモーフィズム
1. 特定のクラスポリモーフィズムの親クラス変数名 = new child Class()
2. 抽象クラス多態性 親抽象クラス変数名=new Subclass()
3. インタフェース多態性 インタフェース変数名=new 実装クラス()
instanceofキーワード
書式:オブジェクト名instanceofクラス名
戻り値:true false
関数: 指定されたオブジェクトが指定されたクラスによって作成されたオブジェクトであるかどうかを判断します
Animal a1=new Cat();
Animal a2=new Dog();
Method(a1)
public static void method(Animal a){
if(a instanceof Cat){
下方変換
cat 固有のメソッドを呼び出す
}
}
以上がオブジェクト指向 (インターフェース、ポリモーフィズム)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。