1. Toegang tot modifiers
Voorafgaand aan elke methode kunnen programmeurs zogenaamde toegangsmodificatoren specificeren. Deze omvatten de volgende trefwoorden: public
, protected
, private
.
Met deze toegangsmodificaties kunt u de toegang van andere klassen tot een methode beperken.
Als u bijvoorbeeld het private
trefwoord vóór een methodedeclaratie schrijft, kan de methode alleen worden aangeroepen vanuit dezelfde klasse waarin deze is gedeclareerd. Het public
sleutelwoord geeft toegang tot de gemarkeerde methode vanuit elke methode van elke klasse.
Er zijn in totaal 3 van dergelijke modifiers, maar er zijn 4 soorten toegang tot een methode. Dit komt omdat de afwezigheid van een toegangsmodificator ook iets betekent.
Toegang vanaf... | ||||
---|---|---|---|---|
Modificaties | Elke klasse | Kind klasse | Zijn pakket | Zijn klasse |
public |
Ja | Ja | Ja | Ja |
protected |
Nee | Ja | Ja | Ja |
geen modificatie | Nee | Nee | Ja | Ja |
private |
Nee | Nee | Nee | Ja |
1. public
modificator
Een methode (of variabele of klasse) gemarkeerd met de modifier is overal in het programmapublic
toegankelijk . Dit is de hoogste graad van openheid — er zijn geen beperkingen.
2. private
modificator
Een methode (of variabele of klasse) gemarkeerd met de private
modifier is alleen toegankelijk vanuit dezelfde klasse waarin deze is gedeclareerd . Voor alle andere klassen is de gemarkeerde methode (of variabele) onzichtbaar. Het is alsof het niet bestaat. Dit is het hoogste niveau van beperking - alleen zijn eigen klasse.
3. Geen modifier (standaard modifier)
Als een methode (of variabele) niet is gemarkeerd met een modifier, wordt deze geacht de 'standaardmodifier' te hebben. Variabelen of methoden met die modifier (dwz helemaal geen) zijn zichtbaar voor alle klassen in het pakket waarin ze zijn gedeclareerd . En alleen voor hen. Deze modifier wordt soms ook wel genoemd package-private
, wat aangeeft dat toegang tot variabelen en methoden openstaat voor het hele pakket waarin hun klasse zich bevindt.
4. protected
modificator
Als een methode is gemarkeerd met de protected
modifier, dan kan deze worden benaderd vanuit dezelfde klasse, hetzelfde pakket en afstammelingen (klassen die de klasse overerven waarin de methode is gedeclareerd). We zullen dit onderwerp in meer detail analyseren in de Java Core-zoektocht.
U kunt de modifier op al uw methoden gebruiken public
(evenals op al uw klassen en klassevariabelen) totdat u het einde van de Java Syntax-zoektocht bereikt. Je hebt de andere modifiers nodig wanneer we OOP actief gaan leren.
Waarom zijn toegangsmodifiers nodig?
Ze worden noodzakelijk voor grote projecten die door tientallen en honderden programmeurs tegelijkertijd worden geschreven.
Soms zijn er situaties waarin een programmeur een te grote methode in delen wil splitsen en een deel van de code wil verplaatsen naar hulpmethoden. Maar tegelijkertijd wil hij of zij niet dat andere programmeurs deze hulpmethoden aanroepen, omdat de corresponderende code mogelijk niet correct werkt.
Dus bedachten ze deze toegangsmodifiers. Als u een helpermethode markeert met het woord private , dan kan geen andere code dan uw klas uw helpermethode zien.
2. static
trefwoord
Het static
sleutelwoord maakt een methode statisch. We zullen later bekijken wat dat betekent. Onthoud voorlopig een paar feiten over statische methoden.
Feit 1. Een statische methode is aan geen enkel object gekoppeld , maar behoort in plaats daarvan tot de klasse waarin deze is gedeclareerd. Om een statische methode aan te roepen, moet u schrijven:
ClassName.MethodName()
Voorbeelden van statische methoden:
Naam van de klasse | Naam van de statische methode | |
---|---|---|
Thread.sleep() |
Thread |
sleep() |
Math.abs() |
Math |
abs() |
Arrays.sort() |
Arrays |
sort() |
De klassenaam voor de naam van een statische methode kan worden weggelaten als u de statische methode vanuit zijn klasse aanroept. Dit is de reden waarom u niet hoeft te schrijven Solution
voor de namen van elk van de statische methoden die worden aangeroepen.
Feit 2. Een statische methode heeft geen toegang tot de niet-statische methoden van zijn eigen klasse. Een statische methode heeft alleen toegang tot statische methoden. Als resultaat declareren we alle methoden die we willen aanroepen vanuit de main
methode statisch.
Waarom? U kunt deze vraag zelf beantwoorden wanneer u begint met het leren van OOP en begrijpt hoe statische methoden werken.
3. throws
trefwoord
Er is nog een sleutelwoord dat u waarschijnlijk in een methodedeclaratie hebt gezien: het throws
sleutelwoord. In tegenstelling tot toegangsmodificaties en het static
trefwoord, wordt dit trefwoord achter de methodeparameters geplaatst:
public static Type name(parameters) throws Exception
{
method body
}
We zullen de precieze betekenis ervan later bekijken als we uitzonderingen bestuderen.
Maar om er oppervlakkig op in te gaan, kunnen we zeggen dat een methode die is gemarkeerd met het sleutelwoord throws fouten (uitzonderingen) kan genereren, waarmee wordt bedoeld instanties van de Exception
klasse (en klassen die deze overerven). Als er verschillende soorten fouten in een klas kunnen voorkomen, moet u ze allemaal opsommen, gescheiden door komma's.
4. main
methode
De regel waar een methode wordt gedeclareerd, die alle modifiers bevat, heeft invloed op hoe deze methode wordt aangeroepen vanuit andere klassen en methoden. Het beïnvloedt het type resultaat dat de methode retourneert en geeft aan welke fouten mogelijk zijn tijdens het uitvoeren.
Zo'n regel wordt een methodedeclaratie genoemd en heeft de volgende algemene indeling:
access modifier static Type name(parameters) throws exceptions
Waar access modifiers
wordt vervangen door public
, protected
, private
, of helemaal niets;
als de methode statisch is, static
verschijnt het trefwoord (het is afwezig voor niet-statische methoden)
Type
is het type van de geretourneerde waarde ( void
als er geen resultaat is)
Nu begrijp je waarschijnlijk wat alle trefwoorden betekenen in de declaratie van de main
methode:
public static void main(String[] args) throws Exception
Toegang tot de main()
methode is mogelijk vanuit elke klasse, zoals aangegeven door het public
trefwoord.
De methode is statisch en kan dus expliciet worden aangeroepen als Solution.main()
.
De main
methode retourneert geen enkel resultaat. Het retourtype is void
(geen type).
De main
methode heeft argumenten(!): een reeks strings. En de parameternaam args
suggereert 'argumenten' voor onze geest. Wanneer het programma start, kunt u het argumenten doorgeven - een reeks tekenreeksen. Ze zullen worden opgenomen in de args
array in de main()
methode.
Onverwerkte fouten zoals Exception
(of zijn afstammelingen) kunnen in de main()
methode voorkomen.
GO TO FULL VERSION