this
: 이것 저것 요것 그것
자기 자신 객체를 지정할 때 사용하는 키워드이다
this. 을 사용하면 동일 클래스 내의 멤버 멤버변수, 메서드 를 참조 할 수 있다
this( ) 를 사용하면 생성자 내부에서 자신의 다른 생성자를 호출할 수 있다
① this. 를 사용하여 Person클래스 내부에 선언된 멤버변수를 참조 ( 매개변수 구분 가능하게 함 )
② this( )를 사용하여 name은 매개변수로 받고 1은 기존의 Person 생성자를 참조하여 age라고 판단 가능
③ this( )를 사용하여 Person 생성자를 참고하게 되어 "이유없음"은 name으로, 1은 age로 판단 가능
다음 예제를 통해 확인해보자 ▼
[ Person 클래스 - 부모 클래스 ]
① 멤버변수인 String 타입의 name과 int 타입의 age 선언
② 기본 생성자를 생성하여 내부에서 this( )를 사용해 멤버변수인 name과 age 초기화
③ String 타입의 name을 매개변수를 받는 생성자를 생성하고
this( )를 사용해 멤버변수 age를 참조
④ String 타입과 int 타입의 매개변수를 받는 생성자를 생성하고 this.을 사용해 멤버변수를 참조
( name은 toUpperCase()로 인해 대문자로 바뀜 )
⑤ 반환값이 String 타입인 info( )메서드 생성
[ Teacher, Employee, Student 클래스 - 자식 클래스 ]
① 부모 클래스의 상속을 받고 있기 때문에 부모 클래스의 멤버변수에 this.를 사용해 접근
② 각 클래스들의 고유한 멤버변수를 선언해 부모클래스의 메서드인 info( )를 오버라이딩
[ main 클래스 ]
① 부모 클래스인 Person에 대한 생성자를 생성한 다음 메서드 info( )를 호출 후 실행
② Person에 대한 매개변수가 문자열인 생성자인 경우
name은 "hongglidong"으로 입력 받아 멤버변수에 저장하고
age는 원래 생성자의 멤버변수를 참조하여 1
③ Person에 대해 매개변수를 문자열과 정수 모두 받는 생성자인 경우
원래 생성자의 멤버변수인 name과 age에 각각 저장(초기화)
④ 자식 클래스인 Teacher 클래스에서 오버라이딩 된 info ( )클래스가 실행될 때
부모 클래스의 멤버변수를 참조
super
: 본받고 싶은 존재..
한단계 위 부모클래스 의 객체를 지정할 때 사용하는 키워드이다
super.을 사용하면 부모클래스의 멤버를 참조할 수 있다
생성자 내부에서만 사용이 가능하며, 부모클래스의 생성자를 호출하는데 사용한다
생성자의 첫 라인에는 반드시 this ( ), super ( )가 있어야 하는데 이를 기술하지 않으면
묵시적으로 super가 삽입되어 부모클래스의 기본 생성자를 자동으로 호출한다
생성자 내부에서 또다른 생성자를 호출할 때는 this ( ), super ( )을 반드시 생성자 블록 내부의 첫 라인에 기술해야 한다
[ Person 클래스 - 부모 클래스 ]
① 멤버변수인 String 타입의 name과 int 타입의 age 선언
② String 타입의 name을 매개변수를 받는 생성자를 생성하고
this( )를 사용해 멤버변수 age를 참조
③ String 타입과 int 타입의 매개변수를 받는 생성자를 생성하고 this.을 사용해 멤버변수를 참조
( name은 toUpperCase()로 인해 대문자로 바뀜 )
④ 반환값이 String 타입인 info( )메서드 생성
[ Mother 클래스 - 자식 클래스 ]
super( )를 통해 부모 클래스의 변수에 접근
[ Teacher, Employee, Student 클래스 - 자식 클래스 ]
① 부모 클래스의 상속을 받고 있기 때문에 부모 클래스의 멤버변수에 this.를 사용해 접근했던 걸
super( )를 통해 부모 클래스의 변수 사용 가능
② 각 클래스들의 고유한 멤버변수를 선언해 부모클래스의 메서드인 info( )를 오버라이딩
[ main 클래스 ]
① 자식 클래스인 Mother 클래스의 생성자를 생성하여 부모 클래스에서 상속 받은 info( ) 메서드 호출 후 실행
② 자식 클래스인 Employee 클래스의 생성자를 생성하여 부모 클래스에서 상속 받은 info( ) 메서드 호출 후 실행
(이 때 super을 사용해 부모 변수에 접근했기에 앞의 두 매개변수(name, age)는 부모 클래스의 멤버변수이고
나머지 매개변수(department)는 자식 클래스의 고유한 멤버변수)
③ 자식 클래스인 Student 클래스의 생성자를 생성하여 부모 클래스에서 상속 받은 info( ) 메서드 호출 후 실행
(이 때 super을 사용해 부모 변수에 접근했기에 앞의 두 매개변수(name, age)는 부모 클래스의 멤버변수이고
나머지 매개변수(studentId)는 자식 클래스의 고유한 멤버변수)
④ 자식 클래스인 Teacher 클래스의 생성자를 생성하여 부모 클래스에서 상속 받은 info( ) 메서드 호출 후 실행
(이 때 super을 사용해 부모 변수에 접근했기에 앞의 두 매개변수(name, age)는 부모 클래스의 멤버변수이고
나머지 매개변수(subject)는 자식 클래스의 고유한 멤버변수)
'Java 기본 개념' 카테고리의 다른 글
자바를 잡아라 제13장 - '나'라는 객체가 여러 형태를 갖는 날까지... (0) | 2022.10.24 |
---|---|
자바를 잡아라 제 12장 - 접근조차 하기 힘들 때에는 우회해서라도 접근하자 (0) | 2022.10.21 |
자바를 잡아라 제 10장 - 물려받는 게 없다면 스스로 만들어라 (0) | 2022.10.18 |
자바를 잡아라 제 9장 - 차원이 다른 클래스를 보여줘야 된다 (0) | 2022.10.17 |
자바를 잡아라 제 8장 - 믿을만한 게 없을 때는 나 자신을 믿자 (0) | 2022.10.11 |