^ Linux - Friheden til at programmere i Java: Version 0.7.20040516 - 2020-12-31 ^| | [[java:java-jdbc-opgaver|forrige]] | | [[java:java-avancerede-klasser-final|næste]] | ---- ==== Kapitel 21. Avancerede klasser ==== Dette kapitels afsnit om final på variabler forudsættes af[[java:java-indre-klasser|Kapitel 22]], Indre klasser. Forudsætter[[java:java-arv|Kapitel 6]], Nedarvning og[[java:java-pakker|Kapitel 7]], Pakker og ønske om at vide mere om emner som først bliver relevante når man laver større programmer. ==== 21.1. public, protected og private ==== Det er vigtigt at styre adgangen til at kalde metoder og ændre på variabler, i særdeleshed når programmerne bliver store. Det kan lette overskueligheden meget hvis interne variabler, metoder og klasser er skjult for programmøren. Adgang styres med nøgleordene public, protected og private. Adgangskontrol ud over public/private bliver først interessant når der er mange klasser og programmet spænder over flere pakker. Se eventuelt kapitlet om pakker. === 21.1.1. Variabler og metoder === Variabler og metoder erklæret //public// er altid tilgængelige, inden og uden for klassen. Variabler og metoder erklæret //protected// er tilgængelige for alle klasser inden for samme pakke. Klasser i andre pakker kan kun få adgang, hvis de er nedarvinger. Skriver man //ingenting// , er det kun klasser i samme pakke, der har adgang til variablen eller metoden. Hvis en variabel eller metode er erklæret //private// , kan den kun benyttes inden for samme klasse (og kan derfor ikke tilsidesættes med nedarvning). Det er det mest restriktive. Adgangen kan sættes på skemaform: **Tabel 21-1. Adgangsregler** ^ Adgang ^^ public ^^ protected ^^ (ingenting) ^^ private ^| | i samme klasse | ja | ja | ja | ja | | klasse i samme pakke | ja | ja | ja | nej | | arving i en anden pakke | ja | ja | nej | nej | | ej arving og i en anden pakke | ja | nej | nej | nej | Holder man sig inden for samme pakke, er der altså ingen forskel mellem public, protected og ingenting. === 21.1.2. Klasser === Klasser kan erklæres public eller ingenting (men ikke protected eller private). Klasser erklæres normalt public og er tilgængelige fra alle pakker. //public// class X{ //// ...// } Undlader man public, er klassen kun tilgængelig inden for samme pakke. class X{ //// ...// } Man kan have flere klasser i en fil, men højst en, der er public, og denne klasse skal hedde det samme som filnavnet. ---- | [[java:java-jdbc-opgaver|forrige]] | [[java:index|hjem]] | [[java:java-avancerede-klasser-final|næste]] | | Opgaver | | Nøgleordet final |