Anbefalet, 2022

Redaktørens Valg

Forskel Mellem udvider og implementerer søgeord i Java

Søgeordene udvides og redskaber bruges til at arve funktionerne i en allerede eksisterende forælder blok i nyoprettede børneblok. Ved at udvide søgeord kan en nyoprettet klasse (underklasse) arve funktionerne i en eksisterende klasse (superklasse). Ved hjælp af redskaber, kan en nyoprettet klasse implementere alle metoderne i en grænseflade. Den primære forskel mellem søgeord udvides og redskaber er, at en klasse udvider en anden klasse til at arve alle sine medlemmer, mens en klasse implementerer en grænseflade for at arve alle det metoder og implementere dem i henhold til dets krav. Der er nogle andre forskelle mellem søgeord udvidelser og redskaber diskuteret i et sammenligning diagram vist nedenfor.

Sammenligningskort

Grundlag for sammenligningudviderredskaber
GrundlæggendeDet udvidede søgeord bruges til at oprette en underklasse med funktioner i en superklasse.Udførelsesordet søgeord bruges til implementering af en grænseflade
MetoderDet udvidede søgeord overtræder muligvis ikke alle metoder i en superklasse.Redskaberne til nøgleordet skal implementere alle metoderne i en implementeret grænseflade.
klasseEn klasse kan kun udvide en superklasse.En klasse kan implementere flere interfaces.
grænsefladeEn grænseflade kan strække mere end en grænseflade.En grænseflade kan ikke implementere en anden grænseflade.

Definition af udvidelse af søgeord

Arv er et vigtigt koncept i objektorienteret programmering, når en underklasse udvider en anden superklasse. En underklasse må kun udvide en superklasse. En klasse kan aldrig udvide mere end en superklasse i Java. Når en klasse udvider en anden klasse, kan den tilsidesætte de metoder, der er defineret i en superklasse. Lad os forstå, at søgeordet udvides ved hjælp af et eksempel.

 klasse A {streng s; A (streng s1) {s = s1; } // visningsstreng tomt display () {System.out.println (+ s); }} klasse B udvider A {String i; B (streng s1, streng i1) {super (s1); i = i1; } void dispaly () {super.dispaly (); / * display () af klasse A påberåbt. * / System.out.println (+ i); }} klasse Overstyr {public static void main (String args []) {B ob = ny B (Tech, Forskelle); ob.display (); / * visning af klasse B påberåbt * /}} / * udsætte * / Tech Forskelle 

I ovenstående kode kan du bemærke, at klasse B har udvidet klasse A og har tilsidesat metodedisplayet () defineret i klasse A. På samme måde kan en grænseflade udvide mere end et interface ad gangen. Som interface behøver ikke at implementere nogen metode til det udvidede interface, og det er derfor tilladt at arve flere grænseflader ad gangen.

Definition af redskaber nøgleord

Ved hjælp af nøgleordet implementerer en klasse alle metoderne i en grænseflade. Når en klasse implementerer en grænseflade, skal denne klasse implementere alle metoder til implementeret interface. En grænseflade kan aldrig implementere en anden grænseflade, da implementerer søgeord løfter implementering af metoderne, men en grænseflade implementerer aldrig metoder i den, så det er umuligt for en grænseflade at implementere en anden grænseflade. Lad os forstå implementerer søgeord ved hjælp af et eksempel.

 interface strings {void display (String s); } interface integer {void show (int i); } klasse Demo implementerer strenge, heltal {void show (int i) {System.Out.Println ("heltal værdi:" + i); } void display (String s) {System.Out.Println ("strengværdi:" + s); }} klasse Demo_main {public static void main (string args []) {Demo d = ny demo (); d.display ( "TechDifferences"); d.show (2); }} / * output * / TechDifferences 2 

Som i koden ovenfor kan du se, at klassedemoen implementerer to grænseflader og heltal og har implementeret de metoder, der er angivet i både de grænseflader, der vises () og viser ().

Nøgleforskelle Mellem udstrækker og redskaber

  1. En klasse kan arve en anden klasse, eller en grænseflade arver andre grænseflader ved hjælp af et søgeord udvides, mens en klasse kan implementere grænseflader ved hjælp af et søgeord implementer.
  2. En underklasse, der udvider en superklasse, kan eller måske ikke tilsidesætte alle metoderne i en superklasse. På den anden side skal en klasse, der implementerer en grænseflade, definere / implementere alle metoderne i den grænseflade.
  3. En klasse kan implementere et hvilket som helst antal af en grænseflade på samme tid. På den anden side kan en klasse udvide kun en superklasse.
  4. En grænseflade kan udvide ethvert antal grænseflader, men en grænseflade kan aldrig implementere nogen anden grænseflade som implementeringsmidler, der definerer metoderne og grænsefladen har altid abstrakte metoder, så en grænseflade kan aldrig implementere en anden grænseflade.

Konklusion:

Jeg konkluderer diskussionen, at implementering af en grænseflade gør koden mere fleksibel end at udvide en klasse. Da det undgår begrænsningen af ​​at arve kun en superklasse i Java. Ved hjælp af redskaber, kan en klasse arve funktioner i flere grænseflader.

Top