Implements vs Extends
Implementer og udvidelser er to nøgleord, der findes i Java-programmeringssprog, der giver et middel til at overføre tilføjet funktionalitet til en ny klasse. Implementeringsnøgleord bruges eksplicit til implementering af en grænseflade, mens extends-søgeord bruges til at arve fra en (super) klasse. Bemærk, at koncepterne om arv og grænseflader findes i de fleste af de andre objektorienterede programmeringssprog som C # og VB.NET, men de tilbyder forskellige syntaks eller nøgleord til anvendelse af disse koncepter. Denne artikel fokuserer kun på Implementerer og udvider nøgleord defineret i Java.
udvider
Udvider nøgleord bruges til at implementere konceptet om arv i Java-programmeringssprog. Arv giver i det væsentlige kodegenbrug ved at tillade at udvide egenskaber og opførsel af en eksisterende klasse med en nyligt defineret klasse. Når en ny underklasse (eller afledt klasse) udvider en superklasse (eller forældreklasse), vil denne underklasse arve alle attributter og metoder i superklassen. Underklassen kan eventuelt tilsidesætte opførslen (give ny eller udvidet funktionalitet til metoder), der er arvet fra overordnet klasse. En underklasse kan ikke udvide flere superklasser i Java. Derfor kan du ikke bruge udvidelser til flere arver. For at have flere arver skal du bruge grænseflader som forklaret nedenfor.
redskaber
Implementeringsnøgleord i Java-programmeringssprog bruges til at implementere en interface af en klasse. En grænseflade i Java er en abstrakt type, der bruges til at specificere en kontrakt, der skal implementeres af klasser, der implementerer denne grænseflade. Normalt vil en grænseflade kun indeholde metodesignaturer og konstante deklarationer. Enhver grænseflade, der implementerer en bestemt grænseflade, skal implementere alle metoder, der er defineret i grænsefladen, eller skal erklæres som en abstrakt klasse. I Java kan typen af en objektreference defineres som en grænsefladetype. Men dette objekt skal enten være null eller skal indeholde et objekt i en klasse, der implementerer den pågældende grænseflade. Ved hjælp af nøgleordet Implements i Java kan du implementere flere grænseflader til en enkelt klasse. En grænseflade kan ikke implementere en anden grænseflade. Imidlertid kan en grænseflade udvide en klasse.
Forskel mellem redskaber og udvidelser
Selvom implementeringer og udvidelser er to nøgleord, der giver en mekanisme til at arve attributter og adfærd til en klasse i Java-programmeringssprog, bruges de til to forskellige formål. Implementeringsnøgleord bruges til en klasse til implementering af en bestemt grænseflade, mens extends-søgeord bruges til en underklasse til at udvide fra en super klasse. Når en klasse implementerer en grænseflade, er den klasse nødt til at implementere alle de metoder, der er defineret i grænsefladen, men når en underklasse udvider en superklasse, kan den muligvis ikke tilsidesætte metoderne, der er inkluderet i den overordnede klasse. Endelig er en anden vigtig forskel mellem implementeringer og udvidelser, at en klasse kan implementere flere grænseflader, men den kan kun strække sig fra en super klasse i Java. Generelt anses brugen af redskaber (grænseflader) for at være mere gunstig sammenlignet med brugen af udvidelser (arv) af flere grunde som større fleksibilitet og muligheden for at minimere koblingen. Derfor foretrækkes programmering til en grænseflade i praksis frem for at strække sig fra baseklasser.