this 와 super 의 차이점
this 와 super 의 차이점은 다음과 같습니다.
함수 | 기능 |
this ( ) | 그 클래스의 다른 생성자를 호출 |
super ( ) | 슈퍼 클래스의 생성자를 호출 |
this 와 super 의 공통점
두 메소드 모두 생성자의 가장 윗 부분에 위치해야 합니다.
왜냐하면 생성자는 객체가 생성될 때 가장 먼저 호출되는 함수이며
this 와 super 는 생성자 호출에 사용되는 메소드이기 때문입니다.
만약 오버로딩 된 생성자를 선택해야 하는 경우 this 또는 super 에 호출하길 원하는 생성자의 인수를 대입하면 됩니다.
예제 코드
B1 클래스의 객체를 생성합니다.
A1 클래스를 상속받았기 때문에 A1의 생성자가 먼저 호출이 됩니다.
21 번째 줄에 super 를 명시해 두긴 했지만 생략하더라도 자바 내부적으로 super 를 호출하게 됩니다.
A1 의 생성자가 호출이 되었고 이 생성자에서 다시 this(1) 으로 본인의 생성자를 호출합니다.
이제 매개인자가 int 인 생성자가 다시 호출이 되게 됩니다.
이 단계까지 완료 했으면 B1 의 생성자 출력부분을 실행 후 종료합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public class this_superTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
B1 b1 = new B1();
}
}
class A1 {
public A1 () {
this(1);
System.out.println("인자가 없는 A 생성자");
}
public A1 (int a1) {
System.out.println("인자가 1개인 A 생성자");
}
}
class B1 extends A1 {
public B1 () {
super();
System.out.println("인자가 없는 B 생성자");
}
}
|
cs |
자바 this super 예제
자바 this super 사용법
자바 this super 차이
자바 this super 호출 순서
'Computer Language > JAVA' 카테고리의 다른 글
[JAVA] 자바 오버라이딩이란? (0) | 2020.12.13 |
---|---|
[JAVA] 자바 public, private, protected 접근자의 차이점 (0) | 2020.12.13 |
[JAVA] 슈퍼클래스의 생성자 오버로딩을 서브클래스에서 호출하는 방법 (0) | 2020.12.13 |
[JAVA] 슈퍼클래스와 서브클래스의 상속 알아보기 (0) | 2020.12.13 |
[JAVA] 자바 Math 클래스를 사용하는 방법 (0) | 2020.12.12 |