분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
옵션 |
|
public class Circle {
private double radius;
public Circle(){
System.out.println("Circle()");
}
public Circle(double radius) {
this();
this.radius = radius;
System.out.println("Circle(double radius)" + this.radius);
}
}
class SubCircle extends Circle
{
private Circle inner = new Circle(1);
public SubCircle() {
super(5);
System.out.println( "SubCircle()" );
}
public static void main(String args[]) {
new SubCircle();
}
}
위 코드를 출력하면
Circle()
Circle(double radius)5.0
Circle()
Circle(double radius)1.0
SubCircle()
이런 출력결과가 나오는데 이해가 잘 안되네요. 처음 메인에서 SubCircle 객체를 생성하면
1. super(5)===> Circle(5) 가 실행되고
2. Circle(5) 생성자 안에서 Circle() 생성자 실행 ==> "Circle()" 출력
3. 다음 "CIrcle(5.0)" 출력
다음에 "SubCircle()"가 출력 되야하는것이 아닌가요? System.out.println( "SubCircle()" ); 이 라인이 SubCircle() 생성자 안에 같이 있으니까
Circle()
Circle(double radius)5.0
SubCircle()
이런식으로 출려되야 되는것이 아닌가요?
왜 private Circle inner = new Circle(1); 라인이 먼저 실행되고 서브서클이 제일 나중에 출력되나요?
만약 SubCircle 객체가 생성될때 객체안 프라이비트 변수 초기화가 제일 먼저 실행된다고 치면
Circle()
Circle(double radius)1.0
Circle()
Circle(double radius)5.0
SubCircle()
이렇게 출려되야 하는것 아닌가요?
죄송합니다. 댓글 작성은 회원만 가능합니다.