자바 질문 하나만 하겠습니다!
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
27
1
조건 반복문 질문: for 문 ?
0
56
1
정처기 26-2회. 9번 질문드립니다!
0
75
1
이론 보면서 질문이 있습니다.
0
68
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
81
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
132
2
262 정처기 실기 C언어코딩
0
42
1
정보처리기사 262 실기 Hash(해시) 질문
0
72
2
static 변수 질문입니다.
0
58
2
파이썬 4강 질문입니다.
0
66
2
모의고사 1회 3번문제
0
83
3
41강 30:10
0
64
2
이론 공부법 질문 있습니다.
0
84
2
부모의 생성자 관련 질문
0
61
2
시험지 문제에 필기해도 되나요?
0
84
3
41강 11:23
0
52
2
4강파이썬 질문입니다
0
50
2
try-catch 핸들러명
0
63
2
36강 3:48
0
62
2
35강 18:27
0
64
2
자식 코드 내 super() 생략
0
59
2
출력질문
0
72
2
31강 4:06
0
63
2
파이썬 학습자료가 강의 자료와 다릅니다.
0
92
3





