<상속 + 생성자>
1)순서(실행, 변수 초기화)
: 상속관계에서 생성자는 상위 클래스 생성자부터 실행된다. 즉, 실행과 변수 초기화 모두 상위클래스부터 시작한다.
상속관계에서는 최초의 부모 클래스가 있기 때문에 하위 클래스가 있을 수 있다는 확장의 개념으로 접근하는 것이 좋다. 바로 위의 상위 클래스를 호출하면(명시적 호출), 그 상위 클래스의 생성자도 자동 호출된다.(암시적 호출)
연결이 끊어지면 바로 위 생성자 자동 호출한다.
2)기본 생성자의 필요성
:인자가 있는 생성자가 있는 경우는 기본 생성자가 자동으로 만들어지지 않기 때문에 오류 뜨기 십상
기본 생성자는 습관적으로 만들기
<예제1>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
class TV {
public TV() {
System.out.println("TV");
}
} //실행1
class Movie extends TV {
String prat = "";
public Movie() {
}
public Movie(String part) {
this.part = part;
System.out.println("Movie");
}
} //실행2
class Comedy extends Movie {
String time = "";
String name = "";
public Comedy() {}
public Comedy (String time, String name, String part) {
super(part);
this.time = time;
this.name = name;
System.out.println("Comedy");
}
} //실행3
public class MovieTest {
public static void main(String args[]) {
Comedy com = new Comedy("21:00", "마파도", "한국영화");
Comedy com2 = new Comedy();
} //실행4
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
생성자를 호출하면 가장 상위 클래스부터 실행된다.(암시적 호출)
출력값:
TV
Movie
Comedy
21:00
한국영화
마파도
TV
17:00
한국영화
가문의 영광
<예제2>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
class OverC {
int i, j;
public OverC(int i, int j) {
this.i = i;
this.j = j;
}
void show() {
System.out.println("상위클래스의 메소드 show() 수행");
}
}
class SubOverC extends OverC {
int k;
public SubOverC(int i, int j, int k) {
super(i, j); //초기화 순서 주의 -> 상위클래스부터 작성
this.k = k;
}
void show() {
System.out.println("하위 클래스의 메소드 show() 수행");
System.out.println("===super를 이용한 상위 클래스 메소드 호출===");
super.show(); //인스턴스 호출
}
}
class SuperExam {
public static void main(String args[]) {
SubOverC over1 = new SubOverc(10, 20, 30);
System.out.println("i, j, k의 값: " + over1.i + " " + over1.j + " " + over1.k)
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
*변수 초기화
하위 인스턴스를 생성할 때 a, b, c 변수를 초기화하려면 상위 클래스부터 차례로 a, b ,c 순서로 초기화 해야한다.
'20.03 ~ 20.08 국비교육 > JAVA' 카테고리의 다른 글
상수 (0) | 2020.03.28 |
---|---|
추상 클래스(Abstract class) vs 인터페이스 (0) | 2020.03.27 |
상속, 오버라이딩(Overriding) (0) | 2020.03.26 |
Garbage collection (0) | 2020.03.26 |
접근제한자 (0) | 2020.03.26 |