자바 질문 하나만 하겠습니다!
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
입니다.
업캐스팅이든 아니든 부모 기본 생성자를 먼저 출력합니다.
어떤 형태든 상속을 받았다면
부모의 생성자가 끝난 다음에 자식 생성자가 끝나야 합니다.
부모를 초기화 다 하고 자식이 초기화 해야합니다.
이 원칙은 애초에 그 어느 예제에서도 변한 적이 없습니다.
+ 질문 여러 개 하셔도 좋습니다.
영상 다운로드는 안되나요?
0
11
0
26년2회 실기기출은 언제쯤...
0
59
2
이론 공부법 요약본 버전 업데이트 문의
0
39
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
59
2
조건 반복문 질문: for 문 ?
0
66
1
정처기 26-2회. 9번 질문드립니다!
0
86
1
이론 보면서 질문이 있습니다.
0
82
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
94
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
155
2
262 정처기 실기 C언어코딩
0
53
1
정보처리기사 262 실기 Hash(해시) 질문
0
86
2
static 변수 질문입니다.
0
66
2
파이썬 4강 질문입니다.
0
74
2
모의고사 1회 3번문제
0
96
3
41강 30:10
0
70
2
이론 공부법 질문 있습니다.
0
96
2
부모의 생성자 관련 질문
0
70
2
시험지 문제에 필기해도 되나요?
0
94
3
41강 11:23
0
62
2
4강파이썬 질문입니다
0
58
2
try-catch 핸들러명
0
72
2
36강 3:48
0
70
2
35강 18:27
0
69
2
자식 코드 내 super() 생략
0
64
2





