Sammenligningstabel
Grundlag for sammenligning | pakker | interfaces |
---|---|---|
Grundlæggende | Pakker er en gruppe af klasser og / eller grænseflader sammen. | Interfaces er en gruppe af abstrakte metoder og konstante felter. |
Søgeord | Pakker er oprettet ved hjælp af "Package" søgeord. | Interface er oprettet ved hjælp af "Interface" søgeord. |
Syntaks | pakke pakke navn offentlig klasse klassenavn { . (kropsdel) . } | interface interface_name { variabel angivelse metode erklæring; } |
Adgang | En pakke kan importeres | En grænseflade kan udvides med en anden grænseflade og implementeres af klassen. |
Adgang til søgeord | Pakker kan importeres ved hjælp af "import" søgeord. | Grænseflader kan implementeres ved hjælp af "implementere" søgeord. |
Definition af pakker
Pakker er samling eller grupper af forskellige klasser og grænseflader. Klasserne i pakker er relateret til hinanden i nogle omfang eller ved arv. Du kan også oprette din pakke og bruge den til dit program.
Oprettelse af en pakke
Følg nedenstående trin for at oprette en pakke.
- Åbn en fil, og angiv derefter navnet på pakken øverst på filen, som f.eks. [Pakke pakkens navn; ] Pakkenavnet er det navn, du vil give til pakken.
- Dernæst definerer du en klasse, du vil sætte i pakken, og husk at du erklærer det offentligt.
- Gem filen som en .java-fil, og kompilér derefter filen, så får du ".class" for den pågældende fil.
- For at oprette en pakke til denne fil, er den kommando, der bruges, "javac -d. file_name.java. Du kan se, at pakken er oprettet, der indeholder en ".class" -fil i den aktuelle mappe. For at placere det i overordnet mappe brug "javac -d. . file_name.java "kommando.
- Du kan også oprette en underpakke ved at erklære underpakke navn som [pakke pakke navn 1. package_name2; ] øverst på filen.
pakke Mypackage; offentlig klasse myclass {public void displayMypackage () {system.out.println ("metode displayMypackage af klasse myclass af pakke Mypackage"); }
Brug af pakken
Pakkerne oprettet eller tilgængelig i mappen kan bruges i programmet ved hjælp af en importopgørelse. Søgeordet, der bruges til at importere en pakke i dit program, er "import". Importopgørelsen kan skrives på to måder, eller du kan sige, at der er to måder at få adgang til en pakke. For det første, hvis du vil bruge en bestemt klasse fra en pakke, følger "Import" nøgleordet af pakkenavnet yderligere efterfulgt af prikoperatøren og klassenavnet, som du vil bruge fra pakken. For det andet, hvis du vil bruge mange klasser, der er indeholdt i pakkerne, følges importordet efterfulgt af pakkenavnet yderligere efterfulgt af prikken og operatøren "*".
import pakkenavn. class_name; eller importer pakkenavn. *;
I ovenstående kode kan du se * -tegnet, der angiver, at anden metode importerer alle de klasser, der er indeholdt i pakkerne.
Lad os nu se brugen af pakken med et eksempel.
Import Mypackage. myclass {class TestMypackage {public static void main (string args []) {myclass ob1 = new myclass (); ob1.displayMypackage (); }} // output metode displayMypackage af klasse myclass af pakke Mypackage.
I ovenstående kode har klassen TestMypackage importeret pakken Mypackage og brugt sin displayMypackage () metode.
Definition af grænseflade
Interface er en slags klasse, men adskiller sig på en måde, at de metoder, der er angivet i grænsefladen, er abstrakte, hvilket betyder, at metoderne kun er erklæret, men ikke defineret. Feltene i grænsefladen er altid offentlige, statiske, endelige. Feltene skal initialiseres på tidspunktet for deklarationen. De metoder, der er angivet af grænsefladen, er defineret af klassen, som implementerer den grænseflade i overensstemmelse med dens krav. Da metoderne i grænsefladen ikke udfører nogen funktion, så er der ingen brug for at skabe noget objekt af grænsefladen. Derfor kan der ikke oprettes noget objekt til grænsefladen.
Grænsefladen kan også arve den anden grænseflade, men den klasse, der arver en sådan grænseflade, skal også implementere alle metoderne i den arvede grænseflade. Da felterne initialiseres på tidspunktet for deres erklæring i grænsefladen, så der ikke er behov for en konstruktor i grænsefladen, så indeholder grænsefladen ingen konstruktør. Lad os se eksemplet om at oprette og bruge en grænseflade.
grænseflade område {float pi = 3, 14; float find_area (float a, float b) {} klasse Cirkel redskaber område {float find_area (float a, float b) {return (pi * a * a); } Klasseformer {public static void main (string args []) {Område A = nyt område (); Cirkel C = Ny cirkel (); A = C; flyde F = Område. find_area (10, 10); system.out.println ("Området i cirklen er:" + F); }
I ovenstående kode havde vi oprettet et grænsefladeområde, og klassen Circle har implementeret grænsefladeområdet. Feltet "pi" er initialiseret i grænsefladen på tidspunktet for dets erklæring. Klassen Cirkel har defineret abstrakte metode for klasserummet efter dets krav.
Nøgleforskelle mellem pakker og grænseflader i Java
- En pakke er en gruppe af klasser og grænseflader sammen, mens en grænseflade er en gruppe af abstrakte metoder.
- Pakken er oprettet ved hjælp af en søgeordspakke , mens en grænseflade oprettes ved hjælp af en søgeordsgrænseflade.
- Hvis der skal bruges en klasse eller en grænseflade inde i en pakke, skal pakkerne importeres, mens en grænseflade skal implementeres.
Konklusion:
Både pakker og grænseflader er containerne. Pakken reducerer kodenes størrelse, da vi bare importerer klassen, der skal bruges i stedet for igen at definere den. Mens grænsefladen reducerer de forvirringer, der opstod under flere arv, fordi i arvelige klasser ikke er bestemt at definere hvilken metode den skal arve i stedet for, definerer den egen.