자바 질문 하나만 하겠습니다!
class Parent {
Parent() {
System.out.println("Parent default");
}
class Child extends Parent {
System.out.println("Child Default");
}
public class Test{
public static void main(String[] args){
Child child = new Child();
}
}
위의 코드가 실행이 된다면 생성자가 자식이기 때문에 Child Default만 출력되지만
만약 Parent child = new Child(); 일 경우에는 부모기본생성자 실행 후 자식 기본생성자가 실행되어 아래처럼 출력이 되는게 맞을까요..??
Parent default
Child Default
답변 2
0
아니요, 업캐스팅 아니어도 부모 먼저 출력됩니다.
코드 상태가 약간 이상해서 아래 코드를 의도하신 것이 맞는지 확인해주세요.
class Parent {
// Parent 클래스의 기본 생성자
Parent() {
System.out.println("Parent default");
}
}
// Parent 클래스를 상속받는 Child 클래스
class Child extends Parent {
// Child 클래스의 기본 생성자
Child() {
System.out.println("Child Default");
}
}
public class Test {
public static void main(String[] args) {
// Child 객체 생성
Child child = new Child();
}
}
출력값은 부모 생성자 -> 자식 생성자 순이기 때문에
Parent default
Child Default
이렇게 출력되는 것이 맞습니다.
이건 업캐스팅이라도 똑같습니다.
class Parent {
Parent() {
System.out.println("Parent default");
}
}
class Child extends Parent {
Child() {
System.out.println("Child Default");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
}
}
이 코드도 똑같이
Parent default
Child default
입니다.
업캐스팅이든 아니든 부모 기본 생성자를 먼저 출력합니다.
어떤 형태든 상속을 받았다면
부모의 생성자가 끝난 다음에 자식 생성자가 끝나야 합니다.
부모를 초기화 다 하고 자식이 초기화 해야합니다.
이 원칙은 애초에 그 어느 예제에서도 변한 적이 없습니다.
+ 질문 여러 개 하셔도 좋습니다.
모의고사 1 회 2번문제 중
0
18
2
26-2 이론문제 재탕
1
13
1
26-2년도 코드문제
0
11
0
26-2 코드문제
0
13
1
15분 48초 질문
0
18
2
26-1년도 이론문제 재탕
0
29
1
26-1년도 코드문제 재탕
0
20
0
이론재탕만 눈치챘어도
0
42
1
25-3년도 이론문제 재탕
0
23
1
25-3년도 코드문제 재탕
0
19
0
출력값 문의
0
22
2
25-2 분기커버리지
0
27
0
25-2 이론 재탕
0
33
1
25-1 이론 재탕
0
30
1
서브넷 마스크
0
43
2
모의고사 1회 계산문제 2개 맞았는데
0
62
2
업캐스팅 문제 예시 4번 부모 호출
0
46
2
모의고사 자료 해설이 너무 불친절하네요.
0
89
2
부모의 생성자 출력 관련
0
41
2
24-3 이론파트 재탕문제
0
49
0
누락코드
0
41
1
다차원 배열 포인터 질문있습니다
0
58
3
24-2 이론 파트 재탕
1
56
1
모의고사 5회
0
46
1





