Heim  >  Artikel  >  Java  >  Erfahren Sie mehr über den Unterschied zwischen Java-Schnittstellen und abstrakten Klassen

Erfahren Sie mehr über den Unterschied zwischen Java-Schnittstellen und abstrakten Klassen

黄舟
黄舟Original
2017-03-15 13:20:461393Durchsuche

Nachdem ich es auf Papier gelesen habe, wird mir klar, dass ich es im Detail machen muss --Lu You Fragen Sie den Kanal, wie klar er ist, damit es eine Quelle lebendigen Wassers gibt – Zhu Xi


Schnittstelle , Schnittstelle, Schnittstelle bezieht sich im Allgemeinen auf Methoden und Methoden, die von anderen Funktion aufgerufen werden.

Form der Schnittstelle:

public interface interfaceName
{
        public static final   变量;
        void FunctionName(args);
}

Merkmale der Schnittstelle :

1), Schnittstelle kann Variablen und Methoden enthalten .

2), wobei die Variablen implizit als öffentliche statische Endvariablen bezeichnet werden und nur solche Variablen sein können.

3). Schnittstellenmethoden werden implizit als öffentliche abstrakte Methoden bezeichnet und können nur öffentliche abstrakte Methoden sein.

4). Die Methoden in der Schnittstelle können keine spezifischen Implementierungen haben. Die Schnittstelle ist ein äußerst abstrakter Typ.

5). Eine Klasse kann mehrere Schnittstellen implementieren und nur eine abstrakte Klasse erben.

6), Schnittstellenmethoden müssen in Unterklassen implementiert werden.

Einfaches Beispiel:

//声明一个接口
interface Say {
    public void sayMessage();
}
//两个实现类
class SayHello implements Say {
    public void sayMessage() {
        System.out.println("hello");
    }
}
class SayHi implements Say {
    public void sayMessage() {
        System.out.println("Hi");
    }
}
public class TestSay {
    public static void main(String[] args) {
        //同样都是用Say这个接口类型实例,却可以输出两个结果
        Say say = new SayHello();
        say.sayMessage();
        Say say1 = new SayHi();
        say1.sayMessage();
    }
}
Abstrakte Klasse:


Die allgemeine Definition einer abstrakten Klasse ist natürlich eine Klasse, die abstrakte Methoden enthält , verwenden Sie einfach abstract für Wenn eine Klasse geändert wird, ist sie immer noch eine abstrakte Klasse ohne abstrakte Methoden, aber das macht nicht viel Sinn.

Form der abstrakten Klasse:

public abstract abstractName
{
    abstract void function();
    其他的正常类发方法与变量;
}

Eigenschaften der abstrakten Klasse:

1) Die abstrakte Klasse enthält nicht nur abstrakte Methoden, Es kann auch Variablen und gewöhnliche Methoden wie gewöhnliche Klassen enthalten.

2) Abstrakte Methoden können nur öffentlich oder geschützt sein, da abstrakte Klassen vererbt werden sollen und private Methoden bedeutungslos sind.

3) Abstrakte Klassen können nicht zum Erstellen von Objekten verwendet werden, sie werden zur Vererbung verwendet.

4). Eine Unterklasse, die eine abstrakte Klasse erbt, muss die abstrakte Methode der abstrakten Klasse implementieren, andernfalls ist die Unterklasse auch eine abstrakte Klasse.


抽象类示例:

public class Child extends Children{
    public Child(String name) {
        super(name);
    }

    public void printName() {
        System.out.println(super.getName());
    }


    public static void main(String[] args) {
        Child boy = new Child("Charley");
        System.out.println(boy.getName());
        Child girl = new Child("Queenie");
        girl.printName();
    }
}

abstract class Children {
    private String name;

    public Children(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    abstract void printName();
}

抽象类和接口的区别

(1)抽象类可以有构造方法,接口内不能有构造方法

(2)抽象类中可以有普通成员变量,接口中的变量都是public static  final修饰的

(3)抽象类中可以包含非抽象的普通方法,接口中的方法默认是抽象方法

(4)抽象类中的抽象方法可以是public,protected、默认类型,接口中的抽象方法是public,默认是public abstract类型

(5)抽象类中可以有静态方法,接口中不包含静态方法

(6)抽象类和接口中都可以有静态成员变量,抽象类中的静态成员变量可以是任意访问类型的,接口中的静态成员变量只能是public static

(7)一个类可以实现多个接口,但只能继承一个抽象类

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über den Unterschied zwischen Java-Schnittstellen und abstrakten Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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