Javaによる多重継承

2341 ワード

多重継承とは、1つのクラスが複数の親から動作と特徴を同時に継承できることを意味しますが、Javaはデータのセキュリティを保証するために単一の継承のみを許可していることを知っています.Javaは、インタフェースと内部クラスの2つの方法で多重継承を実現します.
①インタフェースと内部クラスのアプリケーションシーンの違い?
一、インタフェース
      インタフェースと抽象クラスを紹介する際に,サブクラスは1つの親しか継承できない,すなわち単一の継承しか存在しないが,複数のインタフェースを実現できることが分かったので,多重継承を実現するための敷居となった.
      インタフェースについては、より純粋な抽象クラスだけでなく、インタフェースには具体的な実装がない場合があります.つまり、インタフェースに関連するストレージがないため、複数のインタフェースの組み合わせを阻止することはできません.
interface CanFight {
    void fight();
}

interface CanSwim {
    void swim();
}


interface CanFly {
    void fly();
}

public class ActionCharacter {
    public void fight(){
        
    }
}

public class Hero extends ActionCharacter implements CanFight,CanFly,CanSwim{

    public void fly() {
    }

    public void swim() {
    }

    /**
     *   fight()  ,     ,         
     */
}

二、内部クラス
      上でインタフェースを用いて多重継承を実現するのは比較的実行可能で普遍的な方法であり,内部クラスを紹介する際に内部クラスが多重継承の実現をより完璧にしたことについて述べるとともに,2親クラスが抽象クラスまたは具体的なクラスであれば,私は内部クラスのみで多重継承を実現できることを明らかにした.内部クラスをどのように利用して多重継承を実現するかは、息子がどのように多重継承を利用して父と母の優れた遺伝子を継承するかを見てください.
まずは父Fatherと母Mother:
public class Father {
    public int strong(){
        return 9;
    }
}

public class Mother {
    public int kind(){
        return 8;
    }
}

  メインイベントはここで、息子類Son:
 
public class Son {
    
    /**
     *      Father 
     */
    class Father_1 extends Father{
        public int strong(){
            return super.strong() + 1;
        }
    }
    
    class Mother_1 extends  Mother{
        public int kind(){
            return super.kind() - 2;
        }
    }
    
    public int getStrong(){
        return new Father_1().strong();
    }
    
    public int getKind(){
        return new Mother_1().kind();
    }
}

試験手順:
public class Test1 {

    public static void main(String[] args) {
        Son son = new Son();
        System.out.println("Son  Strong:" + son.getStrong());
        System.out.println("Son  kind:" + son.getKind());
    }

}
----------------------------------------
Output:
Son  Strong:10
Son  kind:6

息子は父を継いで、父より強くなり、母も受け継いだが、優しさ指数は下がった.ここでは、2つの内部クラスを定義し、それぞれ父親Fatherクラス、母親クラスMotherクラスを継承し、それぞれの親の行為を非常に自然に取得することができます.これは内部クラスの重要な特性です.内部クラスは外部クラスとは関係のないクラスを継承することができ、内部クラスの独立性を保証することができます.この点に基づいて、多重継承が可能になります.