Dit is misschien wel de meest gestelde vraag in interviews met betrekking tot softwareontwikkeling of softwarekwaliteitsborging. Ik heb uit mijn ervaring gezien dat velen van ons vaak in de war raken of de definitie en het gebruik van abstracte klassen en interfaces vergeten. Dus, Ik wil het het makkelijkst maken zodat niemand er ooit nog problemen mee heeft.
abstracte klasse en interfaces zijn twee zeer vitale draaipunten in het objectgeoriënteerde Programmeerconcept.,
eerst zal ik abstracte klasse en het gebruik ervan uitleggen, en later zullen we naar Interfaces gaan.
abstracte klasse is niets bijzonders om naar te kijken als u onderscheid wilt maken met een normale klasse. Maar het heeft een aantal methoden die niet zijn geïmplementeerd, of alleen verklaard, niet gedefinieerd. In dat geval worden al die methoden en de klasse zelf hernoemd met het “abstracte” sleutelwoord.
een abstracte klasse kan één of meerdere niet-geà mplementeerde methoden hebben.,
als een abstracte klasse is niet correct, of heeft geen idealiter gedefinieerde methoden in vergelijking met een reguliere klasse, dus abstracte klassen kunnen niet worden geà nstantieerd, dat betekent dat we geen lijdend voorwerp van abstracte klassen kunnen maken.
de klassen die deze abstracte klasse erven/uitbreiden, moeten alle abstracte methoden van de bovenliggende abstracte klasse implementeren/definiëren.
als een klasse er niet in slaagt om een van de abstracte methoden te definiëren, wordt die klasse ook een abstracte klasse.,
Usage (An imaginary case study):
stel dat u in 1995 een Autoklasse hebt ontworpen die een extra functie had-het kon vliegen. U ontwierp de auto klasse heel mooi, al uw methoden waren zeer standaard en efficiënt, maar toen, je wist dat het heel onmogelijk was om de carFlying() methode uit te voeren. Dus, je hield gewoon de carflying () methode leeg, of Niet geïmplementeerd (nu weet je dat is een abstracte methode evenals klasse!).,
vandaag wil ik die vliegende auto implementeren die u al hebt ontworpen en de technologie is niet langer onmogelijk. De auto die ik ga bouwen heeft alle functies vergelijkbaar met uw auto, en bovendien kan het vliegen. Dus, wat kan ik doen is Ik kan gewoon erven (“verlengt”-voor Java) uw abstracte klasse en moet definiëren/implementeren die carFlying() abstracte methode. hier ga je! onze vliegende auto is klaar om te rijden.
dus, wanneer we een aantal gemeenschappelijke kenmerken of gedrag tussen verschillende objecten hebben, kunnen we een algemene abstracte klasse maken met die functie als een methode geà mplementeerd., Maar dat object kan verschillend gedrag hebben, in dat geval, zullen we een abstracte methode verklaren en zullen die abstracte methoden anders implementeren afhankelijk van de behoefte van het object.
voorbeeld van Abstract Class:
eens te meer, laten we een voorbeeld bekijken, krijgen een stel worstelaars dezelfde hoeveelheid geld per uur om te spelen. maar ze hebben verschillende thema muziek en afwerking gevecht strategie. Zo, we kunnen de betaalmethode hetzelfde voor iedereen te houden en hebben het geïmplementeerd in een klasse genaamd Wrestler., laten we de methoden themeMusic() en finisher() als abstract verklaren omdat deze twee verschillend moeten worden geïmplementeerd voor verschillende objecten in sommige andere klassen die onze abstracte klasse van worstelaars erven.
en de main.java:
Interface:
Als u het bovenste deel van deze tutorial goed hebt doorlopen, zal het begrijpen van de interface veel gemakkelijker voor u zijn.
Interface is geen klasse, het is gewoon interface. Het heeft een aantal methoden zonder lichaam erin, alleen de methode handtekening (ze zijn in principe abstracte methoden!,) , en kan een aantal definitieve en statische variabelen. En, een typische klasse “implementeert” interfaces, niet “verlengt”.
meerdere interfaces kunnen tegelijkertijd worden geïmplementeerd (meestal overgenomen).
de klassen die de interfaces overnemen / implementeren, moeten alle abstracte methoden van de interface definiëren.
methoden binnen interfaces zijn standaard openbaar, leeg en abstract.
interface is een soort van meerdere overerving in de programmeertaal Java.
We kunnen niet ook interfaces instantiëren, net als abstracte klassen., Omdat ze onvolledige entiteit zijn, en niet zouden moeten worden toegestaan om te worden gerealiseerd. Maar soms kan een activiteit als instantiating toepasbaar zijn voor het met de hulp van de anonieme innerlijke klasse. Dat is niet onze agenda vandaag.
gebruik van Interface:
Interfaces besparen coderingstijd. Het kan enkele statische en definitieve variabelen bevatten die globaal kunnen worden benaderd. en een aantal methoden die abstract zijn en direct beschikbaar voor verder gebruik op elk gewenst moment aan wie de interface implementeert.,
voorbeeld van Interface:
in het bovenstaande voorbeeld van abstracte klasse zagen we dat één methode hetzelfde was voor iedereen die een lichaam binnen de abstracte klasse had en andere methoden waren abstract. maar voor Interfaces, alle methoden zijn nu gewoon handtekening. De klasse StoneCold implementeert worstelaar interface en definieer alle drie de abstracte methoden van het volgens zijn behoefte.
Deze keer krijgen verschillende worstelaars een verschillende hoeveelheid geld per uur. Dus, het is het meest handig om dezelfde methode als abstract te zetten en het elders te definiëren volgens de behoefte van het object.,
public interface Wrestler {
public abstract void paymentForWork (int hours);
public abstract void themeMusic();
public abstract void finisher();
}
en de volgende klasse implementeert de Wrestler interface.
voor de main.java:
voor object initiating in het geval van abstracte klasse of interface, kunt u het volgende in gedachten houden,
A obj= new B();
//where A is an interface/abstract class. B is the concrete(implements/extends "A”)class which gives it’s memory to A’s obj to have access into B class and utilize its defined methods.