Javaインタフェースのマルチ継承
2890 ワード
インタフェースは「定数」と「メソッド」で定義された集合です.インタフェースは特殊な抽象クラスです.
JAvaクラスは単一継承です.classB extends classA javaインタフェースは複数継承できます.Interface3 extends Interface0, Interface1, interface……
クラス多重継承が許されない主な原因は,AがBとCを同時に継承し,bとcが同時にDメソッドを持つ場合,Aはどのようにしてその継承を決定するかである.したがって、マルチ継承はダイヤモンド危機(プリズム問題とも呼ばれる)を招きやすいが、インタフェースは抽象的な方法であり、サブクラスは誰を継承してもこの方法を複写する必要があるため、インタフェースは複数のインタフェースを継承することができるという問題はない.
たとえば、ローカルでネットワーク可能なプロファイルを読み込むと、インタフェースと2つのインプリメンテーションクラスを宣言できます.
注:1)クラスがインタフェースを実装している場合、インタフェースを実装するすべての方法.2)メソッドの名前、戻りタイプ、パラメータはインタフェースと完全に一致する必要があります.3)インタフェースのメソッドはデフォルトでpublicタイプであるため、実装時に必ずpublicで修飾しなければならない(そうでなければデフォルトではprotectedタイプであり、メソッドの使用範囲を縮小している).4)インタフェースの多継承特性のため、設計モードではインタフェースが汎用型、テンプレートを実装するためによく用いられる.
JAvaクラスは単一継承です.classB extends classA javaインタフェースは複数継承できます.Interface3 extends Interface0, Interface1, interface……
クラス多重継承が許されない主な原因は,AがBとCを同時に継承し,bとcが同時にDメソッドを持つ場合,Aはどのようにしてその継承を決定するかである.したがって、マルチ継承はダイヤモンド危機(プリズム問題とも呼ばれる)を招きやすいが、インタフェースは抽象的な方法であり、サブクラスは誰を継承してもこの方法を複写する必要があるため、インタフェースは複数のインタフェースを継承することができるという問題はない.
たとえば、ローカルでネットワーク可能なプロファイルを読み込むと、インタフェースと2つのインプリメンテーションクラスを宣言できます.
/**
*
*/
public interface Config {
/**
*
*
* @return
*/
Object getConfig();
}
/**
*
*/
public class LocalConfig implements Config {
public Object getConfig() {
//
return null;
}
}
/**
*
*/
public class RemoteConfig implements Config {
public Object getConfig() {
//
return null;
}
}
/**
*
*/
public class UseConfig {
private Config config;
public void user() {
// ,
//
Object obj = config.getConfig();
}
}
注:1)クラスがインタフェースを実装している場合、インタフェースを実装するすべての方法.2)メソッドの名前、戻りタイプ、パラメータはインタフェースと完全に一致する必要があります.3)インタフェースのメソッドはデフォルトでpublicタイプであるため、実装時に必ずpublicで修飾しなければならない(そうでなければデフォルトではprotectedタイプであり、メソッドの使用範囲を縮小している).4)インタフェースの多継承特性のため、設計モードではインタフェースが汎用型、テンプレートを実装するためによく用いられる.