게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[본삭금] JAVA 생성자의 초기화에 관해서...
게시물ID : programmer_17291짧은주소 복사하기
작성자 : lalasweet
추천 : 0
조회수 : 476회
댓글수 : 6개
등록시간 : 2016/05/20 01:04:55
옵션
  • 창작글
  • 베스트금지
  • 베오베금지
  • 본인삭제금지
//소스는 아래와 같습니다.

import java.io.*;

class C1
{
    int a = 10;
    C1() { a=1; }
}
class C2 extends C1
{
    int a = 20;
    int b = 30;
    void print() {System.out.println(super.a);}
    C2() { b=3; }
}
class C3 extends C2
{
    int c = 40;
    C3() { a=100; c=200;}
    void disp() {
        super.print();
        System.out.println(super.a); // super.a는 왜 100으로 초기화?
        System.out.println(a);
    }
}

class myCode
{
    public static void main (String[] args) throws java.lang.Exception
    {
        C3 p = new C3();
        p.disp();
    }
}
-----------------------------------------------------
출력 : 1
       100
       100

질문 : C3클래스의 생성자에의해 C2로부터 상속받은 C3의 멤버변수 a만 100으로 초기화 되어야할 것 같은데
결과값에서 보여지듯 C2의 멤버변수 a까지 100으로 초기화 되는 이유가 뭔가요? ㅠㅠ
상위클래스들의 생성자들이 호출되는건 알고있지만 C2의 생성자에서는 a를 초기화 시키지 않는걸요...
으아어으어앙
 

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