Heim > 类库下载 > java类库 > Java-Vererbung und Schnittstellen

Java-Vererbung und Schnittstellen

高洛峰
Freigeben: 2016-11-03 14:47:38
Original
1785 Leute haben es durchsucht

Die wichtigste Rolle von Schnittstellen ist auch der wichtigste Grund für die Verwendung von Schnittstellen: Sie können auf mehrere Grundklassen zurückgeführt werden. Der zweite Grund für die Verwendung einer Schnittstelle ist derselbe wie für die Verwendung einer abstrakten Basisklasse: um zu verhindern, dass der Client-Programmierer ein Objekt dieser Klasse erstellt und angibt, dass es sich nur um eine Schnittstelle handelt. Dies wirft die Frage auf: Soll ich eine Schnittstelle oder eine abstrakte Klasse verwenden? Wenn wir Schnittstellen verwenden, können wir gleichzeitig die Vorteile abstrakter Klassen und Schnittstellen nutzen. Wenn die Basisklasse, die Sie erstellen möchten, also keine Methodendefinitionen oder Mitgliedsvariablen hat, sind Sie ohnehin bereit, eine Schnittstelle anstelle einer abstrakten Klasse zu verwenden. Wenn Sie im Voraus wissen, dass etwas eine Basisklasse sein wird, besteht Ihre erste Möglichkeit darin, es in eine Schnittstelle umzuwandeln. Abstrakte Klassen sollten nur dann in Betracht gezogen werden, wenn Methodendefinitionen oder Mitgliedsvariablen verwendet werden müssen.

/**
 * Created by xfyou on 2016/11/3.
 * Java 继承和接口演示
 */
public class Adventure {
    static void t(CanFight x) {
        x.fight();
    }

    static void u(CanSwim x) {
        x.swim();
    }

    static void v(CanFly x) {
        x.fly();
    }

    static void w(ActionCharacter x) {
        x.fight();
    }

    public static void main(String[] args) {
        Hero i = new Hero();
        t(i);
        u(i);
        v(i);
        w(i);
    }
}

interface CanFight {
    void fight();
}

interface CanSwim {
    void swim();
}

interface CanFly {
    void fly();
}

class ActionCharacter {
    // 父类中实现了子类中继承的接口方法
    public void fight() {
    }
}

/**
 * 必须先 extends 然后再 impplements
 */
class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly {
    @Override
    public void fly() {

    }

    @Override
    public void swim() {

    }
}
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage