Java入門 (17) - インターフェース
インターフェース
- インターフェイスは「参照データ型」でもあり、コンパイル後のクラス バイトコード ファイルでもあります
- インターフェイスは完全に抽象です (抽象クラスは半抽象です)
* 定義:
[修飾子リスト] インターフェイス インターフェイス名 { } - 多重継承をサポートします - インターフェイス 定数と抽象メソッドの 2 つの部分のみが含まれます - すべての要素はパブリックに変更されます - 抽象メソッドを定義する場合、パブリック抽象修飾子は省略できます - 定数の public static 最後は省略できます - クラスとクラスは継承継承、クラスと呼ばれます実装間の関係は実装と呼ばれます。実装と実装は同時に継承できますが、最初に継承してから実装する必要があります。 非抽象クラスがインターフェイス カードを実装する場合、インターフェイスのすべての抽象メソッドは次のとおりです。実装済み [対象] - インターフェースにコンストラクタメソッドを持てない - メイクアップ クラス間で単一継承しかサポートできない欠点を解消 プラグインに相当 必要なときに呼び出せるのでスケーラビリティが向上 - ポリモーフィズムに使える。
; です。があります ; のような
- is a: a を満たすものはすべて「継承関係」を表す
- has a: a を満たすものはすべて「関連付け関係」を表す
- like a: a のように満たすものはすべて「実装関係」を表す
サンプルコード
interface Intf01{
public static final String A="动物:";
String B="有翅膀的";//public static final省略
//public Intf() {}
//接口不能具有构造函数
public abstract void AI();
}
interface Intf02{
public abstract void AI(String i);
}
abstract class AC implements Intf01,Intf02{ //多继承
public AC() {//抽象类可以接构造方法
System.out.println(A);
}
}
class Test01 extends AC implements Intf01 {//Intf02被间接继承
public Test01(){
System.out.print("这是一只");
}
public void AI() {
System.out.print(B);
}
public void AI(String i) {
System.out.println(i);
}
}
public class Interface {
public static void main(String[] args) {
Test01 t=new Test01();
t.AI();
t.AI("老鹰");
Intf01 tt=new Test01();//类型转换
Intf02 ttt=(Intf02)tt;
//接口与接口之间可以进行强制类型转换,但是可能会出错
ttt.AI("鸡");
}
}