Heim Java javaLernprogramm Der Unterschied zwischen Schnittstelle und abstrakter Klasse

Der Unterschied zwischen Schnittstelle und abstrakter Klasse

Feb 17, 2020 pm 02:25 PM
interface 区别

Der Unterschied zwischen Schnittstelle und abstrakter Klasse

Der Unterschied zwischen Schnittstelle und abstrakter Klasse

Es gibt einen großen Unterschied zwischen Schnittstelle und abstrakter Klasse, und ihre Wahl spiegelt sogar Ob wider Das Verständnis der Art des Problembereichs und der Entwurfsabsicht ist korrekt und angemessen.

 

Abstract class

Interface

实例化

不能

不能

一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承

一个类可以实现多个interface

数据成员

可有自己的

静态的不能被修改即必须是static final,一般不在此定义

方法

可以私有的,非abstract方法,必须实现

不可有私有的,默认是public,abstract 类型

变量

可有私有的,默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值

不可有私有的,默认是public static final 型,且必须给其初值,实现类中不能重新定义,不能改变其值。

设计理念

表示的是“is-a”关系

表示的是“like-a”关系

实现

需要继承,要用extends

要用implements

Abstrakte Klasse
Schnittstelle

Instantiierung

Kann nicht

Kann nicht

Klasse

Eine Vererbungsbeziehung Eine Klasse kann die Vererbungsbeziehung nur einmal verwenden. Mehrfachvererbung kann durch die Vererbung mehrerer Schnittstellen erreicht werden

Eine Klasse kann mehrere Schnittstellen implementieren

Datenelemente

können eine eigene

Statik haben, die nicht geändert werden kann und statisch endgültig sein muss , im Allgemeinen hier nicht definiert

Methode

Can privat sein, nicht abstrakte Methode, muss

implementieren, darf nicht privat sein, Standard ist öffentlich, abstrakter Typ

Variable

kann privat sein, der Standardwert ist ein benutzerfreundlicher Typ, sein Wert kann in Unterklassen oder Neuzuweisung

neu definiert werden

kann nicht privat sein. Der Standardwert ist der öffentliche statische Endtyp, und sein Anfangswert muss in der Implementierungsklasse angegeben werden, und sein Wert kann nicht geändert werden.

Designkonzept

bedeutet „ist -a“. "Beziehung

stellt die „like-a“-Beziehung dar

Zu implementieren

erfordert Vererbung, Sie müssen Extends verwenden

Sie müssen Implements verwenden

1. Ähnlichkeiten

A. Beide sind abstrakte Klassen und können nicht instanziiert werden. B. Sowohl Schnittstellenimplementierungsklassen als auch abstrakte Klassenunterklassen müssen die deklarierten abstrakten Methoden implementieren. Empfohlenes Lernen: Java-Tutorial2. UnterschiedeDie Schnittstelle muss implementiert werden und implementiert werden Die abstrakte Klasse muss vererbt werden und verwendet Extends. B. Eine Klasse kann mehrere Schnittstellen implementieren, aber eine Klasse kann nur eine abstrakte Klasse erben. Die C-Schnittstelle legt den Schwerpunkt auf die Implementierung spezifischer Funktionen, während die abstrakte Klasse die Eigentumsbeziehung betont. D. Obwohl sowohl die Schnittstellenimplementierungsklasse als auch die Unterklassen der abstrakten Klasse die entsprechende abstrakte Methode implementieren müssen, sind die Implementierungsformen unterschiedlich. Jede Methode in der Schnittstelle ist eine abstrakte Methode, die nur deklariert wird (Deklaration, ohne Methodenkörper) und von der Implementierungsklasse implementiert werden muss. Unterklassen einer abstrakten Klasse können selektiv implementiert werden. 3. Anwendungsfälle der Schnittstelle A. Klassen benötigen spezifische Schnittstellen zur Koordination, unabhängig davon, wie sie implementiert sind. B. Es existiert als Bezeichner, der eine bestimmte Funktion implementieren kann, oder es kann ein reiner Bezeichner ohne Schnittstellenmethoden sein. C. Eine Gruppe von Klassen muss als eine einzelne Klasse behandelt werden und der Anrufer kontaktiert diese Gruppe von Klassen nur über die Schnittstelle. D. Es müssen mehrere bestimmte Funktionen implementiert werden, und diese Funktionen haben möglicherweise überhaupt keine Verbindung. 4. Anwendungsfälle der abstrakten Klasse Kurz gesagt, wenn sowohl eine einheitliche Schnittstelle als auch Instanzvariablen oder Standardmethoden benötigt werden, dann Kann es verwendet werden. Die gebräuchlichsten sind: A. Definiert eine Reihe von Schnittstellen, möchte jedoch nicht jede Implementierungsklasse dazu zwingen, alle Schnittstellen zu implementieren. Sie können eine abstrakte Klasse verwenden, um eine Reihe von Methodenkörpern oder sogar leere Methodenkörper zu definieren, und dann Unterklassen die Methoden auswählen lassen, die sie abdecken möchten. B. In einigen Fällen können reine Schnittstellen die Koordination zwischen Klassen auch nicht erfüllen. Zur Unterscheidung verschiedener Beziehungen werden auch Variablen benötigt. Die Vermittlerrolle des Abstrakten kann dies sehr gut erfüllen. C. Standardisiert eine Reihe gegenseitig koordinierter Methoden, von denen einige gemeinsam und zustandsunabhängig sind und gemeinsam genutzt werden können, ohne dass Unterklassen sie separat implementieren müssen, während andere Methoden erfordern, dass jede Unterklasse sie entsprechend implementiert zu seinem eigenen Ein bestimmter Zustand, um eine bestimmte Funktion zu erreichen. Weitere Programmier-Tutorials finden Sie weiterhin auf der chinesischen PHP-Website.       

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Schnittstelle und abstrakter Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Apr 03, 2025 pm 10:06 PM

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

Der Unterschied zwischen H5- und Miniprogramm und Apps Der Unterschied zwischen H5- und Miniprogramm und Apps Apr 06, 2025 am 10:42 AM

H5. Der Hauptunterschied zwischen Mini -Programmen und App ist: Technische Architektur: H5 basiert auf Web -Technologie, und Mini -Programme und Apps sind unabhängige Anwendungen. Erfahrung und Funktionen: H5 ist leicht und einfach zu bedienen, mit begrenzten Funktionen; Mini -Programme sind leicht und haben eine gute Interaktivität. Apps sind leistungsstark und haben reibungslose Erfahrung. Kompatibilität: H5 ist plattformübergreifend, Applets und Apps werden von der Plattform eingeschränkt. Entwicklungskosten: H5 verfügt über niedrige Entwicklungskosten, mittlere Mini -Programme und die höchste App. Anwendbare Szenarien: H5 eignet sich für Informationsanzeigen, Applets eignen sich für leichte Anwendungen und Apps eignen sich für komplexe Funktionen.

So setzen Sie den Kennwortschutz für Exportieren von PDF auf PS So setzen Sie den Kennwortschutz für Exportieren von PDF auf PS Apr 06, 2025 pm 04:45 PM

PDF mit Passwort geschützt in Photoshop exportieren: Öffnen Sie die Bilddatei. Klicken Sie auf "Datei" & gt; "Export" & gt; "Exportieren Sie als PDF". Stellen Sie die Option "Sicherheit" fest und geben Sie dasselbe Passwort zweimal ein. Klicken Sie auf "Exportieren", um eine PDF -Datei zu generieren.

Konzept der C -Sprachfunktion Konzept der C -Sprachfunktion Apr 03, 2025 pm 10:09 PM

C -Sprachfunktionen sind wiederverwendbare Codeblöcke. Sie erhalten Input, führen Vorgänge und Rückgabergebnisse aus, die modular die Wiederverwendbarkeit verbessert und die Komplexität verringert. Der interne Mechanismus der Funktion umfasst Parameterübergabe-, Funktionsausführung und Rückgabeteile. Der gesamte Prozess beinhaltet eine Optimierung wie die Funktion inline. Eine gute Funktion wird nach dem Prinzip der einzigen Verantwortung, der geringen Anzahl von Parametern, den Benennungsspezifikationen und der Fehlerbehandlung geschrieben. Zeiger in Kombination mit Funktionen können leistungsstärkere Funktionen erzielen, z. B. die Änderung der externen Variablenwerte. Funktionszeiger übergeben Funktionen als Parameter oder speichern Adressen und werden verwendet, um dynamische Aufrufe zu Funktionen zu implementieren. Das Verständnis von Funktionsmerkmalen und Techniken ist der Schlüssel zum Schreiben effizienter, wartbarer und leicht verständlicher C -Programme.

Warum müssen Sie Vue.use (Vuerouter) in der Datei idex.js unter dem Router -Ordner anrufen? Warum müssen Sie Vue.use (Vuerouter) in der Datei idex.js unter dem Router -Ordner anrufen? Apr 05, 2025 pm 01:03 PM

Die Notwendigkeit der Registrierung von Vuerouter in der Datei index.js -Datei im Ordner Router Bei der Entwicklung von VUE -Anwendungen stoßen Sie häufig Probleme mit der Routing -Konfiguration. Besonders...

Was sind die Unterschiede und Verbindungen zwischen C und C#? Was sind die Unterschiede und Verbindungen zwischen C und C#? Apr 03, 2025 pm 10:36 PM

Obwohl C und C# Ähnlichkeiten haben, sind sie völlig unterschiedlich: C ist eine prozessorientierte, manuelle Speicherverwaltung und plattformabhängige Sprache, die für die Systemprogrammierung verwendet wird. C# ist eine objektorientierte, Müllsammlung und plattformunabhängige Sprache, die für Desktop-, Webanwendungs- und Spielentwicklung verwendet wird.

Wie benutze ich XPath, um von einem bestimmten DOM -Knoten in JavaScript aus zu suchen? Wie benutze ich XPath, um von einem bestimmten DOM -Knoten in JavaScript aus zu suchen? Apr 04, 2025 pm 11:15 PM

Detaillierte Erläuterung der XPath -Suchmethode unter DOM -Knoten in JavaScript, wir müssen häufig bestimmte Knoten aus dem DOM -Baum basierend auf XPath -Ausdrücken finden. Wenn Sie ...

Der Unterschied in den Ausgangsergebnissen der Konsole.log: Warum haben dieselben Variablen unterschiedliche Druckmethoden, aber unterschiedliche Ergebnisse? Der Unterschied in den Ausgangsergebnissen der Konsole.log: Warum haben dieselben Variablen unterschiedliche Druckmethoden, aber unterschiedliche Ergebnisse? Apr 04, 2025 am 11:48 AM

Eingehende Diskussion der Unterschiede in der Konsole.log-Ausgabe in diesem Artikel wird die Gründe analysieren, warum die Ausgabeergebnisse der Konsolenfunktion in einem Code-Stück unterschiedlich sind. Code -Snippets beinhalten URL -Parameterauflösung ...

See all articles