게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
JAVA 생성자 관련 도움 부탁드립니다.
게시물ID : programmer_7991짧은주소 복사하기
작성자 : alaska10
추천 : 1
조회수 : 432회
댓글수 : 4개
등록시간 : 2015/02/04 01:49:34
옵션
  • 본인삭제금지

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()

이렇게 출려되야 하는것 아닌가요?

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호