java study

#25 참조 변수 super

MonkeyonMars 2022. 6. 12. 17:53

※ 시작하기 앞서  java study 카테고리 자료는 YOUTUBE에 남궁성 강사님의 자바의 정석 영상을 가지고
    공부한 내용을 정리한 것이며 상업적 목적은 전혀 없음을 알립니다.

 

 

 

참조변수 super

 

객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자)내에만 존재

조상의 멤버를 자신의 멤버와 구별할 때 

class Ex7_2 {
	public static void main(String args[]) {
		Child c = new Child();
		c.method();
	}
}

class Parent {	int x = 10;	/* super.x */ }

class Child extends Parent {
	int x=20;	// this.x

	void method() {
		System.out.println("x=" + x);
		System.out.println("this.x=" + this.x);
		System.out.println("super.x="+ super.x);
	}
}

Console

x:3, y:5

 

 

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) {
//		this.x = x;		// 조상의 멤버를 초기화
//		this.y = y;		
//		this.z = z;		// 자손의 생성자는 자기가 선언한것만 초기화 한다.
//	} 

	// 위에 처럼 말고 아래처럼 코드를 작성하면 된다.
    
	Point3D(int x, int y, int z){
		super(x,y);		// 조상클래스의 생성자 point(int x, int y)를 호출
		this.z = z;		// 자신의 멤버를 초기화
	}
}

 

 

생성자 호출 조건

 

생성자의 첫 출에 반드시 생성자를 호출해야 한다. 그렇지 않다면 컴파일러가 생성자의  첫 줄에 super();를 삽입한다.

 

아래 그림을 보면 조상 클래스인 object 기본 생성자 super();를 호출하는걸 알수 있다.

 

 

 

▶참고자료  https://youtu.be/oJlCC1 DutbA