자바

자바 접근 제어자 public protected default private

하이자바 2024. 5. 27. 04:00

자바의 접근 제어자로는 총 네 가지가 있다.

 

public : 접근 제한 없음 (기본 값)

protected : 같은 패키지, 자식 클래스에서 접근

default : 같은 패키지 내에서 접근

private : 같은 클래스 내에서만 접근

 

 

class Car {
    private int speed;
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSpeed() {
        return speed;
    }

    public void setSpeed(int speed) {
        this.speed = speed;
    }
}
class Person{
    public String name;
    public int age;
}
public class AccessPractice {
    public static void main(String[] args) {
        Car car = new Car();
        car.setSpeed(10);
        car.setName("TestCar");
        System.out.println(car.getSpeed() + " " + car.getName());
        car.setSpeed(20);
        System.out.println(car.getSpeed() + " ");

        Person person = new Person();
        person.age = 20;
        person.name = "kim";

        System.out.println(person.age + " " +  person.name);

        person.age = -5;
        System.out.println(person.age);
    }
}

 

다음은 car클래스와 person클래스 예제이다.

car의 경우 변수를 private로 선언 person은 public으로 선언했다.

private으로 선언한 변수는 직접적인 접근을 하지 못하여 getter, setter로 접근할 수 있지만

public의 경우 직접적으로 값을 변경할 수 있다.

이렇게 직접적인 접근은 캡슐화에 위반되는 행위이다. 

그 외 데이터 보호, 은닉 등의 역할도 한다.