Javaインタフェースのマルチ継承

2890 ワード

インタフェースは「定数」と「メソッド」で定義された集合です.インタフェースは特殊な抽象クラスです.
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)インタフェースの多継承特性のため、設計モードではインタフェースが汎用型、テンプレートを実装するためによく用いられる.