[Java의 정석]Chapter7.객체지향 프로그래밍2(10~11)

Hello_Wendy·2022년 4월 26일
0

자바의 정석

목록 보기
51/61
post-thumbnail

Chapter 7. 객체지향 프로그래밍2

10. 참조변수 super

  • super : 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수
  • 멤버변수와 지역변수의 이름이 같을 때 this를 붙여서 구별했듯이 상속받은 멤버와 자신의 멤버와 이름이 같을 때는 super를 붙여서 구별

▶ Child클래스는 조상인 Parent클래스로부터 x를 상속받는데, 자신의 멤버인 x와 이름이 같아서 super로 구별

▶ x, this.x, super.x 모두 같은 변수를 의미하므로 모두 같은 값 출력

  • 모든 인스턴스 메서드에는 this와 super가 지역변수로 존재하는데, 이 들에는 자신이 속한 인스턴스의 주소가 자동적으로 저장됨
  • 조상의 멤버와 자신의 멤버를 구별하는데 사용된다는 점만 제외하면 this와 super는 근본적으로 같음

11. super() - 조상의 생성자

  • this()처럼 super()도 생성자임
  • this()같은 클래스의 다른 생성자를 호출하는데 사용되지만, 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클래스의 생성자가 조상인 Point클래스로부터 상속받은 x,y를 초기화함
(틀린코드는 아니지만, 아래가 더 바람직)

▼생성자 Point3D()를 아래처럼 조상의 멤버는 조상의 생성자를 통해 초기화되로고 작성하는 것이 바람직▼

Point3D(int x, int y, int z) {
	super(x, y); //조상클래스의 생성자 Point(int x, int y)를 호출
    this.z = z; //자신의 멤버를 초기화
}

🎃 클래스 자신에 선언된 변수는 자신의 생성자가 초기화를 책임지도록 작성
🎃 생성자는 상속되지 않음

profile
안녕 나의 새로운 세상

0개의 댓글