본문 바로가기

Java/Java Advance

자바에서 super와 this 활용하기

728x90
반응형

안녕하세요! 오늘은 새로운 코드 예제를 통해 자바에서 `super`와 `this` 의 활용을 알아보도록 하겠습니다.

Pizzeria 클래스

먼저, `Pizzeria` 클래스를 살펴봅시다. 이 클래스는 "알베르토 피자 본점"이라는 이름을 가지며, `restaurantName` 메서드를 통해 해당 피자집의 이름을 출력합니다.

class Pizzeria {
    String name = "알베르토 피자 본점";

    public Pizzeria() {
    }

    public void restaurantName() {
        System.out.println("피자 맛집: " + name);
    }
}

 

PizzeriaNo2 클래스

다음으로, `PizzeriaNo2` 클래스를 살펴봅시다. 이 클래스는 `Pizzeria` 클래스를 상속하며, 새로운 이름 "알베르토 강남점"을 가지고 있습니다. 생성자를 통해 다른 이름으로 초기화할 수 있으며, `restaurantName` 메서드를 통해 현재 클래스와 상속받은 부모 클래스의 이름을 출력합니다.

class PizzeriaNo2 extends Pizzeria {
    String name = "알베르토 강남점";

    public PizzeriaNo2() {
    }

    public PizzeriaNo2(String str) {
        name = str;
    }

    public void restaurantName() {
        System.out.println("본점: " + super.name);   // 부모 클래스의 이름 출력
        System.out.println("2호점: " + this.name);   // 현재 클래스의 이름 출력
        System.out.println("2호점: " + name);        // 현재 클래스의 이름 출력
    }
}

 

SuperThisTest 클래스

마지막으로, `SuperThisTest` 클래스에서는 `PizzeriaNo2` 객체를 생성하고 메서드를 호출하는 예제를 살펴봅시다.

public class SuperThisTest {
    public static void main(String[] args) {
        // 첫 번째 객체 생성
        PizzeriaNo2 res = new PizzeriaNo2();
        res.restaurantName();

        System.out.println("=======================");

        // 두 번째 객체 생성
        PizzeriaNo2 res2 = new PizzeriaNo2("알베르토 역삼점");
        res2.restaurantName();
    }
}

 

실행 결과

본점: 알베르토 피자 본점
2호점: 알베르토 강남점
2호점: 알베르토 강남점
=======================
본점: 알베르토 피자 본점
2호점: 알베르토 역삼점
2호점: 알베르토 역삼점


위의 실행 결과를 살펴보면, 첫 번째 객체에서는 `super` 키워드를 통해 부모 클래스의 이름을 가져오고, 두 번째 객체에서는 생성자를 통해 초기화된 새로운 이름이 출력되는 것을 확인할 수 있습니다. 이처럼 `super`와 `this` 키워드는 상속 관계에서 부모 클래스와 현재 클래스의 멤버에 접근하는 데에 사용됩니다.

이상으로 자바에서 `super`와 `this` 의 활용 예제와 실행 결과를 살펴보았습니다.

728x90
반응형