본문 바로가기

Backend/Java

this와 super

this 

- 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있다.

- 멤버변수와 지역변수의 이름이 같을 때 구별하기 위해 사용한다.

- 모든 인스턴스메서드에 지역변수로 숨겨진 채로 존재한다. 

 

this() 

- 같은 클래스의 다른 생성자를 호출할 때 사용하는 생성자

- 생성자의 이름으로 클래스이름 대신 this를 사용

- 반드시 첫줄에서만 호출 가능 

 

super

- 자손클래스에서 조상클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수

- (자손클래스의)상속받은 멤버와 자신의 멤버가 이름이 같을  때 사용 

 

super()

- 조상의 생성자를 호출할 때 사용하는 생성자 

- 조상의 멤버는 조상의 생성자를 호출해서 초기화

 

* 모든 생성자는 첫 줄에 반드시 다른 생성자를 호출해야한다.

그렇지 않으면 컴파일러가 첫 줄에 super();를 자동추가한다. 

public class Ex7_4 {
	public static void main(String[] args) {
		Point3D p = new Point3D(1, 2, 3);
		System.out.println("x=" + p.x + ",y=" + p.y + ",z=" + p.z);
	}
}

class Point {
	int x, y;

	Point(int x, int y) {
		this.x = x;  // 생성자(this) 호출 
		this.y = y;
	}
}

class Point3D extends Point {
	int z;

	Point3D(int x, int y, int z) {
		super(x, y); // Point(int x, int y)를 호출
		this.z = z;
	}
    
	/* Point3D(int x, int y, int z) {
		super(); // 자동추가, Point()를 호출하지만 Point(){} 라는 기본생성자가 없어 컴파일러 에러 발생
        	this.x = x;
        	this.y = y; 
		this.z = z;
	} */
}

출처:자바의정석 기초편(남궁성 저)

'Backend > Java' 카테고리의 다른 글

예외처리 개념  (0) 2022.07.20
캡슐화와 접근제어자  (0) 2022.07.12
오버라이딩과 오버로딩  (0) 2022.07.11
클래스 메서드(static 메서드)란?  (0) 2022.07.07
반복되는 음수값이 있는 총합 구하기  (0) 2022.06.29