Java >> Java tutorial >  >> Tag >> public

Java-adgangsmodifikatorer | Standard, offentlig, beskyttet og privat

I Java kan du indstille et adgangsniveau eller begrænse omfanget af Java-variabler, metoder, klasse, konstruktør og datamedlem. For at angive et omfang af dem skal du bruge Java Access Modifiers i din programkode.

Java-adgangsmodifikatortyper

Der er 4 typer adgangsniveauer i Java

  1. privat: Kun synlig i samme klasse
  2. standard: Synlig inden for pakkeniveauet
  3. beskyttet: Indenfor pakken og uden for pakken, men skal kun bruge arv.
  4. offentlig: Synlig for overalt

Kortlæg alle Java-adgangsmodifikatorer

Her er en simpel tabel over alle Java Access Modifiers for en meget bedre forståelse.

Adgangsmodifikator Inden for klassen Inden for pakken Kun uden for pakke efter underklasse Uden for en pakke
Privat Ja Nej Nej Nej
Standard Ja Ja Nej Nej
Beskyttet Ja Ja Ja Nej
Offentlig Ja Ja Ja Ja

Lad os starte et overblik over adgangsmodifikatorer med enkle eksempler:

Vi tilføjer et-én-eksemplet på alle java-modifikatorer for at forstå, der er mange eksempler på at gøre det samme. Men start altid med den nemme.

1. Java Private Access Modifier

Den mest begrænsede adgangsmodifikator er Privat , kun adgang inden for klasseniveau.

Lad os prøve eksemplet med at skabe en 2 klasse A og B, og prøv privat data medlem af A klasse for B klasse. Det burde være en kompileringsfejl. Tjek dette eksempel på ændring af privat adgang.

class A {
 private int a = 40;

 private void message() {
 System.out.println("Hello java");
 }
}
public class B {
 public static void main(String args[]) {
 A obj = new A();

 //Compile Time Error
 System.out.println(obj.a);
 obj.message();
 }
}

Output og skærmbillede:

Fejl:(7, 12) java:message() has private access in A
Fejl:(6, 31) java:a has private access in A

2. Java Default Access Modifier

Standardmodifikatoren er kun tilgængelig i pakken. Hvis ingen modifikator skal definere, er den standard.

Lad os oprette et eksempel på standardadgangsmodifikator, Opret 2 pakker – eye.hunts og andet . Forsøger at få adgang til A-klassen uden for dens en pakke, da A-klassen er standard, så den kan ikke tilgås uden for pakken.

package eye.hunts;

class A {
 public void message() {
 System.out.println("Hello");
 }
}
package other;

import eye.hunts.A;

class B {
 public static void main(String args[]) {
 A obj = new A();
 obj.message();
 }
}

Output:Fejl: (3, 17) java:eye.hunts.A is not public in eye.hunts; cannot be accessed from outside package ......

3. Java Protected Access Modifier

Java Protected access modifier er tilgængelig i pakken og uden for pakken, men kun gennem nedarvning.

Lad os se eksemplet med en beskyttet adgangsmodifikator. Ved at bruge ovenstående eksempel og lige ændre meddelelsesmetoden for denne pakke erklæres den som beskyttet, så den kan kun tilgås uden for klassen gennem arv. Og klasse A er offentlig.

package eye.hunts;

public class A {
 protected void message() {
 System.out.println("Hello");
 }
}
package other;

import eye.hunts.A;

class B extends A {
 public static void main(String args[]) {
 B obj = new B();
 obj.message();
 }
}

Output: Hej

4. Java Public Access Modifier

Offentlig adgangsmodifikator har et bredere adgangsniveau sammenlignet med andre, den kan få adgang overalt. Se eksemplet på det.

package eye.hunts;

public class A {
 public void message() {
 System.out.println("Hello");
 }
}
package other;

import eye.hunts.A;

class B {
 public static void main(String args[]) {
 A obj = new A();
 obj.message();
 }
}

Output: Hej

Skriv en kommentar, hvis du er i tvivl og forslag til denne øvelse.


No
Java tag