Programming/객체 지향 프로그래밍(OOP)

OOP 활용: this와 super, 상위 클래스에서 기본 생성자 구현(상속)

vita12321 2023. 9. 29. 08:00
728x90
반응형

이번 글에서는 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 핵심 요소 'this super 키워드' '상위 클래스에서 기본 생성자 구현' 대해 다루겠습니다. 이전에는 상속의 개념과 그로 인한 장점을 살펴봤지만, 이번 글에서는 this super 키워드를 어떻게 활용하는지, 그리고 상위 클래스에서 기본 생성자를 어떻게 구현하는지 등에 대해 심화된 내용과 실제 사례를 통해 설명하겠습니다.


1. this super 키워드란 무엇인가?

 

'이름 충돌(Name Collision)'이라는 문제를 해결하기 위해 Java에서는 'this' 'super'라는 가지 특별한 키워드를 제공합니다. 'this' 현재 객체를 가리키며, 'super' 부모 클래스의 객체를 가리킵니다. 이들은 필드와 메소드에 접근할 사용되며, 코드의 명확성과 재사용성을 증가시킵니다.


2. this super 키워드를 사용하는가?

 

객체 지향 프로그래밍에서 클래스의 멤버 변수(필드) 이름과 메소드 매개변수 이름이 같을 경우 컴파일러는 어떤 것을 사용해야 할지 혼동될 있습니다. 이런 경우, 우리는 'this' 키워드를 사용하여 현재 객체의 멤버 변수임을 명시적으로 나타낼 있습니다.

 

또한, 하위 클래스에서 상위 클래스의 메소드를 오버라이딩(재정의) 때도 마찬가지입니다. 만약 하위 클래스에서 상위 클래스의 메소드와 동일한 이름을 가진 메소드를 정의하면, 메소드는 상위 클래스의 원래 메소드를 가립니다(오버라이딩). 이럴 원래 상위 클래스의 메소도르 호출하려면 'super' 키워드를 사용하면 됩니다.


3. this super 활용하기

 

Java 언어 기준으로 Vehicle라는 부모 클래스와 Car라는 자식 클래스가 있다고 가정하겠습니다.

 

예시 코드:

public class Vehicle {

    protected String brand = "Ford";

 

    public Vehicle() {

        System.out.println("Vehicle constructor");

    }

 

    public void honk() {

        System.out.println("Beep, Beep!");

    }

}

 

public class Car extends Vehicle {

    private String modelName;

 

    public Car(String modelName) {

        // Call parent constructor

        super();

 

        // Use `this` to access the current object's field

        this.modelName = modelName;

       

        System.out.println("Car constructor");

    }

 

    public static void main(String[] args) {

 

        Car myCar = new Car("Mustang");

 

        myCar.honk();  // From parent

 

        System.out.println(myCar.brand + " " + myCar.modelName);  // Ford Mustang

    }

}

 

예제에서 Car 클래스는 Vehicle 클래스로부터 brand 속성과 honk() 메소드를 상속받았습니다. 또한, this 키워드를 사용하여 현재 객체의 modelName 필드에 접근하고, super 키워드를 사용하여 부모 클래스의 생성자를 호출했습니다.


4. 상위 클래스에서 기본 생성자 구현하기

 

기본 생성자는 아무런 매개변수가 없는 생성자입니다. 자바에서는 명시적으로 생성자가 작성되지 않은 경우 컴파일러가 기본 생성자를 자동으로 추가합니다.

 

하지만 하위 클래스에서 상위 클래스의 기본 생성자를 호출하려면 상위 클래스에 명시적으로 기본 생성자를 작성해야 합니다. 이것이 필요한 이유는 하위 클래스의 생성자가 실행될 자동으로 상위 클래스의 기본 생성자가 먼저 실행되기 때문입니다.


5. 주의사항

 

this super 키워드 상속 관련된 코드는 잘못 사용하면 예상치 못한 결과나 복잡성을 초래할 있습니다. 따라서 코드 작성 주의해야 합니다.


6. 결론

 

객체 지향 프로그래밍에서 'this super' '상위 클래스에서 기본 생성자 구현' 중요한 개념입니다. 개념을 이해하고 활용하면 코드 재사용, 확장성 제공, 유지 보수 용이와 같은 여러 가지 장점을 얻을 있습니다.

 

그러나 이러한 도구들을 사용할 때에도 주의사항이 존재합니다. 항상 올바른 방법과 위치에서 this super 키워드를 사용하는 것이 중요합니다.

728x90
반응형