Java >> Java-zelfstudie >  >> Java

Java – Interviewvragen en antwoorden op de interface

In dit artikel behandelen we enkele van de interviewvragen met hun motivering op de Java-interface

Dit zijn de meest gestelde interviewvragen van OOPS-concepten

Opmerking: Alle rechtvaardiging gedaan met betrekking tot beide versies, d.w.z.;

  • Tot Java 7 versie
  • Post Java 8 loslaten

V) Wat is interface in Java? OF Leg interface in Java uit ?

Tot Java 7-versie,

  • Een interface in java is een pure abstracte klasse, wat betekent dat alle methoden abstract zijn en variabelen zijn constanten
  • Standaard zijn alle methoden in de interface openbaar &samenvatting en variabelen zijn openbaar , statisch &finale
  • Interface is een middel om volledige abstractie in Java te bereiken

Na Java 8-release,

  • Interface kan standaard . bevatten en statisch methoden, naast abstracte methoden
  • Hoewel het lijkt op abstracte klassen, maar ze zijn in veel opzichten anders
  • Lees meer over Java 8 standaard en statische methoden in Interface in detail

V) Welk type variabelen kan worden gedefinieerd in een interface?

Wees standaard, alle variabelen gedeclareerd in de interface is,

  • openbaar
  • statisch
  • finale

Opmerking: zelfs wanneer niet expliciet aangegeven in de interface

Wat betekent dat deze impliciete modifier maak alle variabelen in de interface CONSTANT

V) Kunnen we een interface maken?

  • Nee, we kunnen de interface niet instantiëren
  • Omdat de interface geen constructor heeft en alleen abstracte methoden en constanten bevat, hoeven we dus niet te instantiëren
  • In plaats daarvan bieden implementatieklassen een concrete implementatie voor deze abstracte methoden en zijn constanten toegankelijk via .

Na Java 8-release,

  • Naast abstracte methoden en constanten heeft Java 8 standaard en statische methoden geïntroduceerd
  • de standaardmethoden zijn toegankelijk met behulp van het referentieobject van de klasse
  • statische methoden zijn toegankelijk via de interfacenaam, d.w.z.; .
  • Lees meer over Java 8 standaard en statische methoden in Interface in detail

V) Kunnen we een object voor een interface maken?

  • Nee, we kunnen geen object van een interface maken

V) Wat gebeurt er als we een concrete methode binnen Interface definiëren?

Tot Java 7-versie,

  • Er wordt een compilatiefout gegenereerd met de onderstaande reden
  • Compileerfout: Abstracte methoden specificeren geen body

Na Java 8-release,

  • Concrete methode (methode met body) is toegestaan ​​met standaard of statisch trefwoord als voorvoegsel, zoals hieronder weergegeven
  • Anders wordt zelfs in Java 8 een compilatiefout gegenereerd, zoals te zien is onder de schermopname

V) Kan een methode binnen een interface als definitief worden verklaard?

  • Standaard zijn de methoden die in de interface worden gedeclareerd openbaar &samenvatting zelfs als we het niet expliciet declareren, voegt de compiler deze modifiers toe tijdens de compilatietijd
  • Interface staat alleen openbaar toe &samenvatting modifiers in methodedeclaratie
  • Als finale trefwoord toegevoegd in methodedeclaratie, dan zal de compiler een fout genereren zoals te zien is in de onderstaande schermopname
  • Compileerfout: Illegale modifier voor de weergave van de interfacemethode; alleen openbaar en abstract zijn toegestaan

Na Java 8-release,

  • Toch, finale modifier is niet toegestaan ​​in een van de methoden in de interface, d.w.z.; samenvatting , standaard &statisch methoden
  • Compileerfout: Illegale modifier voor de weergave van de interfacemethode; alleen public, abstract, default, static en strictfp zijn toegestaan

V) Wat gebeurt er als we de variabelen binnen de interface niet initialiseren?

  • Compiler geeft foutmelding dat de laatste variabele moet worden geïnitialiseerd
  • Omdat variabelen die in de interface zijn gedefinieerd, standaard openbaar, statisch en definitief zijn. De uiteindelijke variabele moet dus altijd worden geïnitialiseerd waar deze wordt gedeclareerd
  • Compileerfout: Het lege laatste veld is mogelijk niet geïnitialiseerd
  • Geen verandering, zelfs niet na Java 8-release

V) Kunnen we leden als privé of beschermde modifier binnen de interface declareren?

  • Variabelen (leden) gedefinieerd in de interface zijn standaard openbaar , statisch &finale
  • Daarom is geen andere toegangsmodifier toegestaan ​​behalve openbaar
  • Tijdens het compilatieproces voegt/voegt de compiler public in , statisch &finale trefwoord voor variabelen
  • Dit zijn interfacevariabelen en zijn toegankelijk via de interfacenaam
  • Bijvoorbeeld . van een andere klas
  • Geen verandering, zelfs niet na Java 8-release

V) Hoe krijgen we toegang tot variabelen die in de interface zijn gedefinieerd?

  • Leden die in de interface zijn gedefinieerd, zijn toegankelijk met de interfacenaam van elke andere klasse
  • Bijvoorbeeld . van een andere klas
  • Geen verandering, zelfs niet na Java 8-release

V) Kunnen we variabelen wijzigen die in de interface zijn gedefinieerd?

  • Sinds de variabelen die in de interface zijn gedefinieerd, zijn definitief daarom kunnen we de waarde van deze variabelen nergens wijzigen (eenvoudig OOPS-concept)
  • Als we proberen de waarde te wijzigen, geeft de compiler een fout
  • Compileerfout: Het laatste veld . kan niet worden toegewezen
  • Geen verandering, zelfs niet na Java 8-release

V) Kunnen we een waarde opnieuw toewijzen aan een interfaceveld?

  • Het opnieuw toewijzen van velden veroorzaakt een compileerfout omdat deze definitief zijn standaard
  • Compileerfout: Het laatste veld . kan niet worden toegewezen

V) Welke modificaties zijn toegestaan ​​voor methoden in een interface?

  • Tot Java 7-versie , alleen openbaar en abstract zijn toegestaan
  • Post Java 8-release , alleen openbaar, abstract, standaard, statisch en strictfp zijn toegestaan

V) Is het oké om een ​​"abstract" zoekwoord toe te voegen aan de interfacedefinitie?

  • Ja, we kunnen zelfs abstract . toevoegen trefwoord naar interface-definitie (enigszins vergelijkbaar met abstracte klassen)

V) Of de klasse met succes wordt gecompileerd, als we geen van de abstracte methoden van Interface implementeren?

  • Nee, er wordt een compilatiefout gegenereerd
  • Als een klasse een interface implementeert, moet deze een definitie of concrete implementatie bieden voor elke abstract methode

Na Java 8-release,

  • Toch moet de implementatieklasse een definitie of concrete implementatie bieden voor elke abstract methode in interface
  • Uitzonderlijk is standaard en statisch methoden; het is oké als we de standaardmethode niet overschrijven
  • Lees meer over Java 8 standaard en statische methoden in Interface in detail

V) Wat is de best mogelijke oplossing als we niet enkele van de abstracte methoden van Interface willen implementeren?

  • De beste oplossing is om de implementatieklasse te declareren als abstract ; compilatie zal slagen
  • Maar de volgende overervende klasse (d.w.z. deze klasse uitbreiden) moet een concrete methode-implementatie bieden of opnieuw declareren als abstract

V) Kunnen we de zichtbaarheid van de methoden verminderen tijdens het implementeren van de interface?

  • Standaard zijn abstracte methoden die in de interface worden gedeclareerd public
  • Volgens de overheersende regel kan de zichtbaarheid van de toegang tot de methoden verder worden uitgebreid
  • Het is dus verplicht om overschrijvende methoden als openbaar te declareren; aangezien geen enkele andere toegangszichtbaarheid breder is dan openbaar
  • Lees hier meer over Java-overschrijvende regels

V) Kunnen we de constructor in de interface declareren?

  • Er wordt een compilatiefout gegenereerd met de melding "Interfaces kunnen geen constructors hebben
  • Compileerfout: Interfaces mogen geen constructors hebben

V) Kan de interface definitief zijn?

  • Nee, de interface kan niet definitief zijn en er wordt een compilatiefout gegenereerd
  • Compileerfout: Illegale modifier voor de interface ; alleen openbaar en abstract zijn toegestaan

V) Kan interface elke klasse uitbreiden?

  • Nee, interface kan geen enkele klasse uitbreiden
  • Interface kan slechts een of meer andere interfaces uitbreiden

V) Kan een interface een andere interface implementeren?

  • Nee, interface kan geen andere interface implementeren
  • Interface kan slechts een of meer andere interfaces uitbreiden

V) Kan een interface een andere interface uitbreiden?

  • Ja, een interface kan een of meer interfaces uitbreiden

V) Wat is een markeringsinterface of een getagde interface?

  • Een interface zonder velden of methoden staat bekend als markeringsinterface
  • Marker-interface wordt gebruikt om essentiële informatie aan JVM of compiler aan te geven of te verstrekken
  • Als alternatief wordt het een getagde interface genoemd
  • java.io.Serializable of java.lang.Cloneable zijn voorbeelden van een markerings- of getagde interface
  • Marker-interface verbetert de leesbaarheid in vergelijking met andere alternatieven

V) Kan een interface een andere interface als lid bevatten?

  • Ja, een interface kan een andere interface bevatten
  • Dit wordt de geneste interface genoemd

V) Wat is geneste interface in Java?

  • Een interfacedeclaratie in een andere klasse of interface staat bekend als geneste interface
  • Tijdens de compilatie voegt de compiler een statisch trefwoord in/voegt het toe aan de geneste interface

DemoInterfaceA.java

package in.bench.resources.itf.example;

public interface DemoInterfaceA {

	String NAME = "BenchResources.Net";

	// Nested interface inside another interface
	interface NextedItfExample {

	}
}

V) Wat als het verschil tussen abstracte klasse en interface ?

  • De onderstaande tabel toont enkele van de verschillen tussen abstracte klasse en interface
  • Lees dit artikel voor meer informatie met gedetailleerde uitleg en voorbeelden

Zr. Nee.

Abstracte lessen

Interface
1 Bevat ledenvariabelen Alle variabelen zijn eigenlijk constanten
2 Het kan constructors hebben Interface mag geen constructors hebben
3 Kan de status van een object bevatten met behulp van instantielidvariabelen Aangezien alle variabelen statisch en definitief zijn, is er dus geen concept van de status van een object vasthouden
4 Dwingt om abstracte methoden te implementeren of anders klasse als abstract te declareren standaardmethoden kunnen indien nodig worden overschreven, maar forceren nooit


Java-tag