Nemmeste forklaring af Abstrakte klasse og Grænseflade

Dette er måske det mest stillede spørgsmål i alle interviews, der er relateret til udvikling af Software, eller software kvalitetssikring. Jeg har set fra min erfaring, at mange af os ofte bliver forvirrede eller glemmer definitionen og brugen af abstrakte klasser og grænseflader. Så jeg vil gøre det nemmest, så ingen har problemer med det nogensinde igen.

abstrakt klasse og grænseflader er to meget vigtige omdrejningspunkter i det objektorienterede Programmeringskoncept.,

først vil jeg forklare abstrakt klasse og det er brug, og senere vil vi flytte ind i grænseflader.

abstrakt klasse er ikke noget særligt at se på, når du vil differentiere med en almindelig klasse. Men det har fået nogle metoder, som ikke er gennemført, eller kun erklæret, ikke defineret. I så fald omdøbes alle disse metoder og selve klassen med det “abstrakte” søgeord.

en abstrakt klasse kan have et eller flere antal ikke-implementerede metoder.,

som en abstrakt klasse er ikke korrekt eller har ikke ideelt definerede metoder sammenlignet med en almindelig klasse, så abstrakte klasser kan ikke instantieres, det betyder, at vi ikke kan oprette direkte objekter af abstrakte klasser.

de klasser, der arver/udvider denne abstrakte klasse, skal implementere / definere alle abstrakte metoder i den overordnede abstrakte klasse.

Hvis en klasse ikke definerer nogen af de abstrakte metoder, bliver den klasse også en abstrakt klasse.,

anvendelse (et imaginært casestudie):

lad os antage, at du i 1995 har designet en bilklasse, der havde en ekstra funktion-den kunne flyve. Du designede bilklassen meget pænt, alle dine metoder var meget standard og effektive, men dengang vidste du, at det var helt umuligt at implementere carFlying() metoden. Så du har lige holdt carFlying () metoden Tom eller uimplementeret (nu ved du, at det er en abstrakt metode såvel som klasse!).,

i dag vil jeg implementere den flyvende bil, som du allerede har designet, og teknologien er ikke længere umulig. Den bil, jeg skal bygge, har alle de funktioner, der ligner din bil, og derudover kan den flyve. Så hvad kan jeg gøre er, at jeg bare kan arve (“udvider”-for Java) din abstrakte klasse og skal definere/implementere den carFlying() abstrakte metode. værsgo! vores flyvende bil er klar til at rulle.

så når vi har nogle fælles funktioner eller adfærd blandt forskellige objekter, kan vi lave en generel abstrakt klasse med den funktion som en implementeret metode., Men disse objekter kan have forskellige adfærd, i så fald vil vi erklære en abstrakt metode og vil implementere disse abstrakte metoder forskelligt efter objektets behov.

eksempel på abstrakt klasse:

lad os igen overveje et eksempel, en flok brydere får det samme beløb i timen for at spille. men de har forskellige tema musik og efterbehandling kamp strategi. Så vi kan holde betalingsmetoden samme for alle og få den implementeret i en klasse ved navn Wrestrestler., lad os erklære themeMusic() og finisher () metoder som abstrakte, fordi disse to skal implementeres forskelligt for forskellige objekter i nogle andre klasser, der arver vores Wrestrestler abstrakt klasse.

og den vigtigste.java:

Interface:

Hvis du har gennemgået den øverste del af denne tutorial korrekt, vil det være meget lettere for dig at forstå interface.

Interface er ikke en klasse, dens bare interface. Det har fået nogle metoder uden krop inde i det, bare metoden signatur (de er dybest set abstrakte metoder!,), og kan have nogle endelige og statiske variabler. Og en typisk klasse “implementerer” grænseflader, ikke “udvider”.

flere grænseflader kan implementeres (generelt arvet) ad gangen.

de klasser, der arver / implementerer grænsefladerne, skal definere alle abstrakte metoder til grænsefladen.

metoder inde grænseflader er som standard offentlige, ugyldige og abstrakte.

interface er slags flere arv i Java programmeringssprog.

Vi kan ikke instantiere grænseflader også ligesom abstrakte klasser., Fordi de er ufuldstændig enhed, og bør ikke have tilladelse til at blive realiseret. Men nogle gange kan en aktivitet som instantiating være anvendelig for den ved hjælp af den anonyme indre klasse. Det er ikke vores dagsorden her i dag.

anvendelse af Interface:

grænseflader sparer kodningstid. Det kan indeholde nogle statiske og endelige variabler, som kan tilgås globalt. og nogle metoder, der er abstrakte og let tilgængelige til videre brug når som helst til den, der implementerer grænsefladen.,

eksempel på Interface:

i ovenstående eksempel på abstrakt klasse så vi, at en metode var den samme for alle, der havde en krop inde i den abstrakte klasse, og andre metoder var abstrakte. men for grænseflader er alle metoder nu bare signatur. Klassen StoneCold implementerer Wrestrestler interface og definere alle tre abstrakte metoder til det efter dets behov.

denne gang, forskellige brydere får forskellige beløb i timen. Så det er det mest bekvemme at sætte den samme metode som abstrakt og definere det andetsteds efter objektets behov.,

public interface Wrestler {
public abstract void paymentForWork (int hours);
public abstract void themeMusic();
public abstract void finisher();
}

og den følgende klasse implementerer Wrestrestler-grænsefladen.

for de vigtigste.java:

for objekt initiering i tilfælde af abstrakt klasse eller grænseflade, kan du huske følgende,

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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *