Wat is interface in Java?
Een interface in Java- programmering wordt gedefinieerd als een abstract type dat wordt gebruikt om het gedrag van een klasse te specificeren. Een Java-interface bevat statische constanten en abstracte methoden. Een klasse kan meerdere interfaces implementeren. In Java worden interfaces gedeclareerd met behulp van het interface-sleutelwoord. Alle methoden in de interface zijn impliciet openbaar en abstract.
Syntaxis voor het declareren van interface
interface {//methods}
Om een interface in uw klas te gebruiken, voegt u het trefwoord "implements" toe na de naam van uw klas, gevolgd door de interfacenaam.
Voorbeeld voor het implementeren van interface
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Klik hier als de video niet toegankelijk is
Waarom is een interface vereist?
Laten we een voorbeeld bekijken om het concept van Java-interface beter te begrijpen. De klasse "Media Player" heeft twee subklassen: cd-speler en dvd-speler. Elk heeft zijn unieke implementatiemethode om muziek af te spelen.
Een andere klasse "Combo-drive" erft zowel cd als dvd (zie onderstaande afbeelding). Welke speelmethode moet het erven? Dit kan ernstige ontwerpproblemen veroorzaken. En daarom staat Java geen meervoudige overerving toe.
Laten we nu nog een voorbeeld van Dog nemen.
Stel dat je een vereiste hebt waarbij klasse "hond" klasse "dier" en "Huisdier" erven (zie onderstaande afbeelding). Maar je kunt in Java geen twee klassen uitbreiden. Dus wat zou je doen? De oplossing is Interface.
Het rulebook voor interface zegt:
- Een interface is 100% abstracte klasse en heeft alleen abstracte methoden.
- Klasse kan een willekeurig aantal interfaces implementeren.
Class Dog kan uitbreiden naar klasse "Animal" en de interface implementeren als "Pet".
Voorbeeld van een Java-interface:
Stap 1) Kopieer de volgende code naar een editor.
interface huisdier {openbare ongeldige test ();klasse Hond implementeert Huisdier {openbare ongeldige test () {System.out.println ("Interfacemethode geïmplementeerd");public static void main (String args []) {Huisdier p = nieuwe hond ();p.test ();
Stap 2) Bewaar, compileer en voer de code uit. Bekijk de output.
Verschil tussen klasse en interface
Klasse | Koppel |
---|---|
In de klas kun je een variabele instantiëren en een object maken. | In een interface kun je geen variabele instantiëren en een object maken. |
Klasse kan concrete (met implementatie) methoden bevatten | De interface kan geen concrete (met implementatie) methoden bevatten |
De toegangsspecificaties die met klassen worden gebruikt, zijn privé, beschermd en openbaar. |
In Interface wordt slechts één specificatie gebruikt: Openbaar. |
Wanneer gebruik ik interface en abstracte klasse?
- Gebruik een abstracte klasse wanneer een sjabloon moet worden gedefinieerd voor een groep subklassen
- Gebruik een interface wanneer een rol moet worden gedefinieerd voor andere klassen, ongeacht de overervingsboom van deze klassen
Moet feiten over Interface weten
- Een Java-klasse kan meerdere Java-interfaces implementeren. Het is noodzakelijk dat de klasse alle methoden moet implementeren die in de interfaces zijn gedeclareerd.
- Klasse zou alle abstracte methoden moeten overschrijven die in de interface zijn gedeclareerd
- De interface maakt het mogelijk om een bericht naar een object te sturen zonder te weten tot welke klassen het behoort.
- Klasse moet functionaliteit bieden voor de methoden die in de interface zijn gedeclareerd.
- Alle methoden in een interface zijn impliciet openbaar en abstract
- Een interface kan niet worden geïnstantieerd
- Een interfaceverwijzing kan verwijzen naar objecten van de implementatieklassen ervan
- Een interface kan zich uitstrekken over een of meerdere interfaces. Klasse kan slechts één klasse uitbreiden, maar een willekeurig aantal interfaces implementeren
- Een interface kan geen andere interface implementeren. Het moet indien nodig een andere interface uitbreiden.
- Een interface die binnen een andere interface wordt gedeclareerd, wordt geneste interface genoemd
- Op het moment van aangifte moet de interfacevariabele worden geïnitialiseerd. Anders genereert de compiler een fout.
- De klasse kan geen twee interfaces in java implementeren die methoden hebben met dezelfde naam maar met een verschillend retourtype.
Samenvatting :
- De klasse die de interface implementeert, moet functionaliteit bieden voor de methoden die in de interface zijn gedeclareerd
- Alle methoden in een interface zijn impliciet openbaar en abstract
- Een interface kan niet worden geïnstantieerd
- Een interfaceverwijzing kan verwijzen naar objecten van de implementatieklassen ervan
- Een interface kan zich uitstrekken over een of meerdere interfaces. Een klasse kan slechts één klasse uitbreiden, maar een willekeurig aantal interfaces implementeren