본문 바로가기

Java

[Java] 클래스 상속 및 Protected 접근 제어자

클래스 상속과 Protected 접근 제어자

클래스 상속과 Protected 접근 제어자

객체지향 프로그래밍(OOP)에서 상속은 기존 클래스의 특성을 재사용하고 확장하는 강력한 기능입니다. 이 과정에서 클래스 멤버(변수와 메서드)의 접근 제한을 제어하는 것이 중요합니다. `protected` 접근 제어자는 자식 클래스에서 부모 클래스의 멤버에 접근할 수 있도록 하면서, 외부 클래스에서는 접근하지 못하도록 합니다. 이제 `protected` 접근 제어자의 사용 방법과 그 예제들을 살펴보겠습니다.

상속이란?

상속은 하나의 클래스가 다른 클래스의 속성과 메서드를 상속받아 새로운 클래스를 만드는 것을 의미합니다. 상속받는 클래스를 서브클래스 또는 자식 클래스라고 하며, 상속을 제공하는 클래스를 슈퍼클래스 또는 부모 클래스라고 합니다.

Protected 접근 제어자란?

`protected` 접근 제어자는 해당 멤버가 같은 패키지 내의 다른 클래스나 그 클래스를 상속받은 자식 클래스에서는 접근할 수 있도록 허용하지만, 그 외의 외부 클래스에서는 접근할 수 없도록 합니다. 이는 클래스 간의 상속 관계를 유지하면서도 데이터 캡슐화를 제공합니다.

왜 사용하는가?

  • 데이터 보호: 외부 클래스에서 접근하지 못하도록 하여 클래스 내부의 데이터 무결성을 유지할 수 있습니다.
  • 코드 재사용성: 상속을 통해 공통 기능을 재사용하면서도 필요한 부분만 자식 클래스에서 확장할 수 있습니다.
  • 유지보수 용이: 공통 기능을 부모 클래스에 정의하여 유지보수를 쉽게 할 수 있습니다.

예제 코드

아래는 `protected` 접근 제어자를 사용하는 간단한 예제입니다:

class Animal {
    protected String name;

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

class Dog extends Animal {
    public void display() {
        setName("Bulldog");
        System.out.println("Dog name is: " + name);
    }
}

public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.display(); // Dog name is: Bulldog
    }
}

위 예제에서 Animal 클래스의 name 변수와 setName 메서드는 protected로 선언되어 있습니다. 따라서 Dog 클래스에서 이들에 접근할 수 있지만, Main 클래스에서는 접근할 수 없습니다.

결론

클래스 상속과 protected 접근 제어자를 활용하면 객체지향 프로그래밍의 이점을 극대화할 수 있습니다. 코드 재사용성과 유지보수성을 높이면서도 데이터의 캡슐화를 유지할 수 있습니다. 이를 통해 더 안전하고 효율적인 코드를 작성할 수 있습니다.