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 privatetrefwoord vóór een methodedeclaratie schrijft, kan de methode alleen worden aangeroepen vanuit dezelfde klasse waarin deze is gedeclareerd. Het publicsleutelwoord 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. publicmodificator

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. privatemodificator

Een methode (of variabele of klasse) gemarkeerd met de privatemodifier 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. protectedmodificator

Als een methode is gemarkeerd met de protectedmodifier, 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. statictrefwoord

Het staticsleutelwoord 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 Solutionvoor 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 mainmethode statisch.

Waarom? U kunt deze vraag zelf beantwoorden wanneer u begint met het leren van OOP en begrijpt hoe statische methoden werken.



3. throwstrefwoord

Er is nog een sleutelwoord dat u waarschijnlijk in een methodedeclaratie hebt gezien: het throwssleutelwoord. In tegenstelling tot toegangsmodificaties en het statictrefwoord, 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. mainmethode

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
Algemeen formaat van een methodedeclaratie

Waar access modifiers wordt vervangen door public, protected, private, of helemaal niets;

als de methode statisch is, staticverschijnt het trefwoord (het is afwezig voor niet-statische methoden)

Typeis het type van de geretourneerde waarde ( voidals er geen resultaat is)

Nu begrijp je waarschijnlijk wat alle trefwoorden betekenen in de declaratie van de mainmethode:

public static void main(String[] args) throws Exception
mainDe methode declareren

Toegang tot de main()methode is mogelijk vanuit elke klasse, zoals aangegeven door het publictrefwoord.

De methode is statisch en kan dus expliciet worden aangeroepen als Solution.main().

De mainmethode retourneert geen enkel resultaat. Het retourtype is void(geen type).

De mainmethode heeft argumenten(!): een reeks strings. En de parameternaam argssuggereert '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.