산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java 액세스 수정자

자바 액세스 수정자

이 자습서에서는 Java Access Modifier, 해당 유형 및 예제를 통해 사용 방법에 대해 알아봅니다.

액세스 수정자란 무엇입니까?

Java에서 액세스 수정자는 클래스, 인터페이스, 변수, 메서드, 생성자, 데이터 멤버 및 setter 메서드의 액세스 가능성(가시성)을 설정하는 데 사용됩니다. 예를 들어,

class Animal {
    public void method1() {...}

   private void method2() {...}
}

위의 예에서 method1()과 method2()의 2가지 메서드를 선언했습니다. 여기,

키워드 public에 유의하십시오. 및 private . 이것은 Java의 액세스 수정자입니다. 가시성 수정자라고도 합니다.

참고 :getters 메소드의 접근 한정자를 설정할 수 없습니다.

<시간>

접근 수정자의 유형

접근 한정자의 유형에 대해 배우기 전에 Java 패키지에 대해 알고 있어야 합니다.

Java에는 다음과 같은 네 가지 액세스 수정자 키워드가 있습니다.

수정자 설명
기본값 선언은 패키지 내에서만 볼 수 있습니다(패키지 비공개)
비공개 선언은 클래스 내에서만 볼 수 있습니다.
보호됨 선언은 패키지 또는 모든 하위 클래스 내에서 볼 수 있습니다.
공개 선언문은 어디에서나 볼 수 있습니다.
<시간>

기본 액세스 수정자

클래스, 메서드, 변수 등에 대한 액세스 수정자를 명시적으로 지정하지 않으면 기본적으로 기본 액세스 수정자가 고려됩니다. 예를 들어,

package defaultPackage;
class Logger {
    void message(){
        System.out.println("This is a message");
    }
}

여기서 로거 클래스에는 기본 액세스 수정자가 있습니다. 그리고 클래스는 defaultPackage에 속한 모든 클래스에서 볼 수 있습니다. 패키지. 그러나 Logger를 사용하려고 하면 defaultPackage 외부의 다른 클래스에 있는 클래스를 사용하면 컴파일 오류가 발생합니다.

<시간>

비공개 액세스 수정자

변수 및 메소드 선언 시 private , 클래스 외부에서 액세스할 수 없습니다. 예를 들어,

class Data {
    // private variable
    private String name;
}

public class Main {
    public static void main(String[] main){

        // create an object of Data
        Data d = new Data();

        // access private variable and field from another class
        d.name = "Programiz";
    }
}

위의 예에서 name이라는 개인 변수를 선언했습니다. 및 display()이라는 비공개 메서드 . 프로그램을 실행하면 다음 오류가 발생합니다.

Main.java:18: error: name has private access in Data
        d.name = "Programiz";
         ^

Data의 private 변수와 private 메소드에 접근하려고 하기 때문에 오류가 발생합니다. 메인의 클래스 수업.

이러한 개인 변수에 액세스해야 하는 경우 어떻게 해야 하는지 궁금할 수 있습니다. 이 경우 getters 및 setters 방법을 사용할 수 있습니다. 예를 들어,

class Data {
    private String name;

    // getter method
    public String getName() {
        return this.name;
    }
    // setter method
    public void setName(String name) {
        this.name= name;
    }
}
public class Main {
    public static void main(String[] main){
        Data d = new Data();

        // access the private variable using the getter and setter
        d.setName("Programiz");
        System.out.println(d.getName());
    }
}

출력 :

The name is Programiz

위의 예에는 name이라는 개인 변수가 있습니다. . 외부 클래스에서 변수에 액세스하기 위해 다음 메서드를 사용했습니다. getName()setName() . 이러한 메소드를 Java에서는 getter 및 setter라고 합니다.

여기서는 setter 메서드(setName() ) 변수와 getter 메서드에 값을 할당합니다(getName()). ) 변수에 액세스합니다.

this을 사용했습니다. setName() 내부의 키워드는 클래스의 변수를 참조합니다. 이 키워드에 대해 자세히 알아보려면 Java this Keyword를 방문하십시오.

참고 :Java에서는 클래스와 인터페이스를 private로 선언할 수 없습니다. 그러나 중첩된 클래스는 private로 선언할 수 있습니다. 자세한 내용은 Java 중첩 및 내부 클래스를 참조하십시오.

<시간>

보호된 액세스 수정자

메소드 및 데이터 멤버가 protected으로 선언된 경우 , 동일한 패키지 내에서 뿐만 아니라 하위 클래스에서도 액세스할 수 있습니다. 예를 들어,

class Animal {
    // protected method
    protected void display() {
        System.out.println("I am an animal");
    }
}

class Dog extends Animal {
    public static void main(String[] args) {

        // create an object of Dog class
        Dog dog = new Dog();
         // access protected method
        dog.display();
    }
}

출력 :

I am an animal

위의 예에는 display()라는 보호된 메서드가 있습니다. 동물 내부 수업. 동물 클래스는 Dog에 의해 상속됩니다. 수업. 상속에 대해 자세히 알아보려면 Java 상속을 방문하십시오.

그런 다음 dog 개체를 만들었습니다. 수업. 개체를 사용하여 부모 클래스의 보호된 메서드에 액세스하려고 했습니다.

보호된 메서드는 자식 클래스에서 액세스할 수 있으므로 Animal 메서드에 액세스할 수 있습니다. Dog의 클래스 수업.

참고 :protected 클래스 또는 인터페이스를 선언할 수 없습니다. 자바로.

<시간>

공개 액세스 수정자

메소드, 변수, 클래스 등이 public로 선언된 경우 , 그러면 어디에서나 액세스할 수 있습니다. 공개 액세스 한정자는 범위 제한이 없습니다. 예를 들어,

// Animal.java file
// public class
public class Animal {
    // public variable
    public int legCount;

    // public method
    public void display() {
        System.out.println("I am an animal.");
        System.out.println("I have " + legCount + " legs.");
    }
}

// Main.java
public class Main {
    public static void main( String[] args ) {
        // accessing the public class
        Animal animal = new Animal();

        // accessing the public variable
        animal.legCount = 4;
        // accessing the public method
        animal.display();
    }
}

출력 :

I am an animal.
I have 4 legs.

여기,

<시간>

한 그림으로 요약된 액세스 수정자

<그림>

액세스 한정자는 주로 캡슐화에 사용됩니다. 프로그램의 어떤 부분이 클래스의 구성원에 액세스할 수 있는지 제어하는 ​​데 도움을 줄 수 있습니다. 데이터의 오용을 방지할 수 있습니다. 캡슐화에 대해 자세히 알아보려면 Java Encapsulation을 방문하세요.


java

  1. C# 액세스 수정자
  2. 자바 연산자
  3. 자바 주석
  4. 자바 for-each 루프
  5. 자바 문자열
  6. 자바 인터페이스
  7. 자바 익명 클래스
  8. 자바 리소스 사용
  9. 자바 주석
  10. 자바 어설션