본문 바로가기
객체지향 OOP

[자바의정석 기초 객체지향 개념] 참조변수 super, 생성자 super()

by bzerome240 2022. 5. 30.

 

참조변수 super

: 객체 자신을 가리키는 참조변수 (= this)

  • 인스턴스 메서드 (생성자) 내에만 존재 (static 메서드에서 사용 불가)
  • 조상의 멤버를 자신의 멤버와 구별할 때 사용
class Parent {
	int x = 10;
	int y = 10;
}

class Child extends Parent {
	int x = 20;

	void method() {
		// 부모와 변수 이름이 같을 경우 this.x super.x로 구분한다.
		System.out.println(x); // 20
		System.out.println(this.x); // 20
		System.out.println(super.x); // 10

		// 상속 받았으므로 this.y, super.y 둘 다 사용가능하다.
		System.out.println(y); // 10
		System.out.println(this.y); // 10
		System.out.println(super.y); // 10
}

 

조상의 생성자 super()

  • 조상의 생성자를 호출할 때 사용
  • 조상의 멤버는 조상의 생성자를 호출해서 초기화
  • 반드시 생성자의 첫 줄에 생성자를 호출해야 한다. (컴파일러가 자동으로 super() 삽입)
    • 결론은 클래스 생성 시 기본 생성자 작성은 필수
class Point {
	int x, y;

	Point(int x, int y) {
		this.x = x;
		this.y = y; 
	}
}

class Point3D extends Point {
	int z;
	
	Point3D(int x, int y, int z) {
		super(x, y); // 조상클래스의 생성자를 호출 = Point(x, y)
		this.z = z;
	}
}
728x90
반응형

댓글