하위 클래스 대상 을 부모 클래스 대상 에 게 할당 하 는 것 에 대하 여 말씀 드 리 겠 습 니 다.

최근 에 부류 의 대상 을 부류 의 대상 에 게 할당 하 는 것 에 대해 좀 깨 달 았 습 니 다.여러분 과 나 누고 싶 습 니 다.그러나 본인 의 수준 이 제한 되 어 있 으 니 지적 과 비판 을 바 랍 니 다.본론 으로 돌아 가면 다음은 몇 가지 작은 예 입 니 다.보 세 요.부모 클래스 테스트:Public class Supclass{public void print(){System.out.println("this is 부모 print()방법"+"―이때 대상"+this.toString();}}하위 클래스:public class Subclass extends Supclass{public static void main(String[]args){  Supclass sup=new Subclass();    sup.print(); System.out.println("이때 대상"+sup.toString());}결과:this is 부모 print()방법―이때 대상 은?Subclass@126b249이때 대상 은?Subclass@126b249설명:Supclass sup=new Subclass();성명 의 대상 은 부모 클래스 대상 이지 만 실제 메모리 공간 은 하위 클래스 대상 입 니 다.부모 클래스 를 계승 하 는 방법 Public void print()가 호출 되 었 습 니 다.출력 은 하위 클래스 대상 이름 분석 입 니 다.결론:컴 파일 할 때 설명 하 는 대상 은 부모 클래스 대상 이지 만 실행 할 때 는 하위 클래스 대상 입 니 다.하위 클래스 는 부모 클래스 를 다시 쓰 는 방법 이 없습니다.  시의 대상 이 부 류 를 계승 하 는 방법 을 호출 하 다.테스트 부모 클래스:Public class Supclass{public void print(){System.out.println("this is 부모 클래스 print()방법"+"―이때 대상"+this.toString()); }}하위 클래스:public class Subclass extends Supclass{public void print(){System.out.println("this is 하위 print()방법"+"―이때 대상"+this.toString();   }    public static void main(String[] args)    {    Supclass sup=new Subclass();    sup.print(); System.out.println("이때 대상"+sup.toString());}결과:this is 하위 print()방법―이때 대상 은Subclass@126b249이 고 이때 대상 은Subclass@126b249설명:나 는 지난 예 를 바탕 으로 부모 류 의 print()방법 을 다시 썼 다.이 때 호출 된 것 은 하위 클래스 의 print()방법 입 니 다.결론:지난 사례 결론 을 바탕 으로 저 는 결론 을 얻 었 습 니 다.이때 대상 이 실 행 될 때 하위 클래스 의 대상 이 확실 합 니 다.만약 에 하위 클래스 가 부모 클래스 를 쓰 는 방법 이 없 으 면 이때 의 대상 은 부모 클래스 를 계승 하 는 방법 을 호출 합 니 다.그렇지 않 으 면,이때 의 대상 은 하위 클래스 방법 을 호출 합 니 다.문제:우 리 는 위의 테스트 에서 이러한 결론 을 얻 을 수 있 습 니까?하위 클래스 대상 을 부모 클래스 대상(즉,Supclass sup=new Subclass()에 게 할당 할 수 있 습 니 다.우리 가 얻 은 것 은 하위 클래스 대상 입 니 다.즉,sup 은 하위 클래스 대상 입 니까????세 부모 클래스 테스트:Public class Supclass{proctected String className="부모 클래스 속성";public void print(){System.out.println("this is 부모 print()방법"+"―이때 대상"+this.toString();}}하위 클래스:public class Subclass extends Supclass{       protected String className="하위 클래스 속성";public void print(){System.out.println("this is 하위 print()방법"+"―이때 대상"+this.toString();  }    public static void main(String[] args)    {    Supclass sup=new Subclass(); System.out.println("이 속성 일 때:"+sup.className);}결과:현재 속성 시:부모 속성 설명:첫 번 째 테스트 를 바탕 으로 부모 클래스 에 속성 className 을 추 가 했 습 니 다.하위 클래스 에 이 속성 을 다시 썼 습 니 다.하지만 제 가 이 대상 의 속성 을 출력 할 때,결론:하위 클래스 의 대상 을 부모 클래스 의 대상 에 게 할당 하 는 방법 과 속성 은 우리 의 정통 적 인 계승 관계 와 매우 다르다.문제:이때 대상 은 도대체 하위 클래스 의 대상 입 니까?아니면 부모 클래스 의 대상 입 니까?추측 시작:  나 는 추측 하기 전에 몇 가지 성명 을 해 야 한다.1.우리 new 의 하위 클래스 대상 일 때 부모 클래스 대상 의 구조 함수 도 동시에 실행 된다.즉,부모 클래스 의 필요 한 정보 와 하위 클래스 대상 은 모두 하나의 메모리 공간 을 차지한다.우리 가 방법 을 다시 쓸 때.그래서 우 리 는 슈퍼 라 는 대부 류 의 대상 을 사용 할 수 있 습 니 다.2.자바 의 대상 은 완전히 대상 을 대상 으로 하 는 사상 이 아 닙 니 다.즉,한 대상 의 속성 과 방법 을 동시에 대상 에 밀봉 하 는 것 이 아니 라 대상 은 자신의 속성 이 있 습 니 다.방법 은 인용 류 중의 방법 입 니 다.이것 은 속성 과 클래스 의 방법의 인용 을 대상 에 봉인 하 는 것 이 라 고 할 수 있 습 니 다.그래서 대상 이 호출 하 는 방법 은 자신의 방법 이 아니 라 클래스 의 방법 입 니 다.자바 가 왜 이렇게 해 야 하 는 지 모 르 겠 습 니 다.3.대상 이 메모리 에 불 러 올 때 클래스 는 먼저 메모리 에 불 러 옵 니 다.이후 클래스 는 메모리 에 만 남아 있어 야 합 니 다.클래스 가 언제 메모리 에서 사라 질 지 저도 잘 모 르 겠 습 니 다.자바 는 반드시 회수 대상 과 같은 회수 메커니즘 이 있 을 것 이 라 고 생각 합 니 다.4.컴 파일 과 실행 은 완전히 다른 일 입 니 다.컴 파일 할 때 주로 성명 대상 의 유형,분배 속성 을 합 니 다.문법 오류 등 을 검사 할 때 하 는 것 은 대상 을 메모리 로 불 러 오 는 것 입 니 다.너 는 내 가 허튼소리 를 하고 있다 고 생각 할 것 이다.아마도 너 는 나의 전문가 점수 가 너무 낮다 고 생각 할 것 이다.나의 신뢰 도가 낮다 고 생각 할 것 이다.그러나 내 가 말 하고 싶 은 것 은 선후 를 가리 지 않 고 달 자 를 우선 으로 하 는 것 이다.하하,나 는 이미 나의 전문 가 를 마이너스 로 나 눌 준비 가 되 어 있다.허튼소리 하지 말고 계속 하 자.추측:1.우리 가 Supclass sup=new Subclass()를 컴 파일 할 때,sup 대상 은 Supclass 클래스 로 밝 혀 졌 습 니 다.따라서 sup 대상 의 속성 은 부모 클래스 대상 의 속성 값 입 니 다.컴 파일 할 때 확 정 된 것 입 니 다.(성명 4,이 부분 에 대해 설명 할 수 있 습 니 다)이 말 은 테스트 3 에 대해 설명 할 수 있 습 니 다.즉,왜 이때 대상 의 속성 은 부모 클래스 대상 의 속성 입 니까?2.우리 가 Supclass sup=new Subclass()를 실행 할 때,이때 sup 대상 의 메모리 공간 은 하위 클래스 대상 의 메모리 공간 입 니 다(성명 4,이 부분 에 대해 설명 할 수 있 습 니 다).이 때 sup 대상 의 메모리 공간 은 두 부분 으로 부모 클래스 를 구성 하 는 필요 한 정보 와 하위 클래스 대상 정보(성명 1,이 부분 에 대해 설명 할 수 있 음)입 니 다.부모 클래스 를 다시 쓰 지 않 을 때 메모리 공간 에 부모 클래스 의 필요 한 정보 가 있 기 때문에 부모 클래스 를 계승 하 는 방법 Public void print()는 당연히 호출 될 수 있 습 니 다.이 말 은 테스트 1 에 대해 설명 할 수 있 습 니 다.3.이 어 2.계속 합 니 다.만약 에 우리 가 부모 클래스 의 방법 을 다시 쓸 때 sup 대상 의 메모리 공간 은 하위 클래스 대상 의 메모리 공간 이기 때문에 하위 클래스 의 방법 Public void print()는 메모리 에 불 러 왔 습 니 다.그래서 우 리 는 하위 클래스 의 방법 Public void print()를 호출 합 니 다.부모 클래스 의 재 작성 방법 을 호출 하려 면 슈퍼 를 사용 해 야 합 니 다.이 단락 은 테스트 2 에 대해 설명 할 수 있 습 니 다.요약:다음은 순 전 히 개인 적 인 관점 입 니 다.하위 클래스 의 대상 을 부모 클래스 의 대상 에 할당 하고 얻 은 대상 은 이러한 대상 입 니 다.컴 파일 은 부모 클래스 의 대상 입 니 다.그러나 실행 은 하위 클래스 대상 입 니 다.구체 적 인 특징 은 다음 과 같 습 니 다.1.부모 클래스 대상 으로 밝 혀 집 니 다.2.부모 클래스 속성 을 가지 고 있 습 니 다.3.하위 클래스 의 메모리 공간 을 차지 합 니 다.4.하위 클래스 방법 으로 부모 클래스 를 덮어 쓰 는 방법 입 니 다.이때 대상 은 하위 클래스 의 방법 을 호출 합 니 다.그렇지 않 으 면 부 류 를 계승 하 는 방법 을 자동 으로 호출 합 니 다.5.저 는 이 대상 이 부 류 대상 도 아니 고 자 류 대상 도 아니 라 고 생각 합 니 다.우리 가 그것 을 사용 하 는 방법 을 사용 할 때 저 는 그것 을 자 류 대상 으로 봅 니 다.만약 그것 의 속성 을 사용 할 때,나 는 그것 을 부모 클래스 의 대상 으로 본다.그것 은 부모 클래스 의 속성 을 차지 하고,하위 클래스 의 방법 을 사용 하 는 대상 이다.도대체 어떤 대상 인지,나 는 성명 에 근거 해 야 한다 고 생각한다.그것 은 부모 클래스 의 대상 이 라 고 할 수 있 지만,하위 클래스 의 방법 을 가지 고 있다.생각해 보 자:테스트 3 을 바탕 으로,우 리 는 어떻게 하위 클래스 의 속성 을 추출 합 니까?????

좋은 웹페이지 즐겨찾기