자바 노트(08,계승)

더 읽 기
 
    Last modified:2013-06-12 16:42:56
    **********************************
계승:
계승(확장):
1.코드 의 재 활용 성 향상;
2.상속 은 류 와 류 사이 에 관 계 를 맺 게 한다.이 관계 가 있어 서 다 태 적 특성 이 생 겼 다.
 
주의:다른 종류의 기능 간소화 코드 를 얻 기 위해 계승 하지 마 십시오.류 와 류 사이 에 속 하 는 관계 가 있어 야 계승 할 수 있다.소속 관계 is a。부류 가 갖 춘 자 류 는 모두 갖 추고 있다.
 
자바 언어:자바 는 단일 계승 만 지원 하고 다 중 계승 은 지원 되 지 않 습 니 다.(상속 을 많이 하면 안전 위험 을 초래 하기 때문이다.여러 부모 클래스 에서 같은 기능 을 정의 하지만 기능 내용 이 다 르 면 하위 클래스 는 어느 것 을 실행 해 야 할 지 확실 하지 않 습 니 다.그러나 자바 는 이러한 메커니즘 을 보류 하고 다른 형식 으로 완성 했다.
자바 다 중 계승 지원.바로 계승 체계 다.
어떻게 계승 체계 중의 기능 을 사용 합 니까?
시스템 을 사용 하려 면 먼저 시스템 의 부모 클래스 에 대한 설명 을 찾 아 보 세 요.부모 클래스 에서 이 시스템 의 공 통 된 내용 을 정의 하기 때 문 입 니 다.공통성 내용 을 이해 하 다.이 시스템 의 기본 기능 을 알 수 있다.그러면 이 시스템 은 이미 기본적으로 사용 할 수 있다.
 
구체 적 으로 호출 할 때 하위 클래스 의 대상 을 만 듭 니 다.왜 일 까요?
첫째,부모 클래스 가 대상 을 만 들 수 없 기 때문에 추상 클래스 와 인 터 페 이 스 는 만 들 수 없다.둘째,하위 클래스 를 만 드 는 대상 은 더 많은 기능 을 사용 할 수 있 고 기본 적 인 것 도 포함 되 며 특유 의 것 도 포함한다.
한 마디 로 부모 클래스 기능 을 찾 아 보고 하위 클래스 대상 을 만 들 고 기능 을 사용 합 니 다.
 
하위 클래스 가 나타 난 후 클래스 구성원 의 특징: 
클래스 의 구성원:
1.변수;
2,함수;
3.구조 함수;
 
1,변수:
하위 클래스 에 비 개인 적 인 동명 이인 변수 가 나 타 났 을 때
하위 클래스 는 이 클래스 의 변 수 를 this 로,하위 클래스 는 부모 클래스 의 동명 변 수 를 슈퍼 로 방문 합 니 다.
슈퍼 의 사용 은 this 의 사용 과 거의 일치 합 니 다.this 는 이러한 대상 의 인용 을 대표 하고 슈퍼 는 부모 대상 의 인용 을 대표 합 니 다.
하위 클래스 에서 같은 이름 의 구성원 변 수 를 정의 합 니 다.하위 클래스 는 부모 클래스 의 같은 이름 변 수 를 사용 하려 면 키워드 슈퍼 를 사용 하여 구분 해 야 합 니 다.일반적으로 이런 상황 은 발생 하지 않 는 다.왜냐하면 부류 에 있 기 때문에 자 류 는 정의 할 필요 가 없다.그리고 부모 클래스 가 정의 할 때 일반 변 수 는 모두 사유 화 됩 니 다.
 
class Person {
	public String test = "person";

}
class Student extends Person{
	public String test = "student";

	public void getTest(){
		System.out.println(super.test +" : "+this.test +" : "+test);
	}

	public static void main(String args[]){
		new Student().getTest();
	}
}
//    :
//person : student : student

 
 
2,하위 클래스 의 함수:
하위 클래스 가 부모 클래스 와 같은 함수 가 나타 날 때 하위 클래스 대상 이 이 함 수 를 호출 할 때 하위 클래스 함수 의 내용 을 실행 합 니 다.부모 클래스 의 함수 내용 이 덮어 쓰 는 것 과 같 습 니 다.이 경우 함수 의 또 다른 특성 입 니 다.다시 쓰기(덮어 쓰기).
자 류 는 부 류 를 계승 하여 부 류 의 기능 을 자 류 에 답습 했다.그러나 하위 클래스 는 이 기능 을 갖 추고 있 지만 기능 의 내용 은 부모 클래스 와 일치 하지 않 습 니 다.이 때 는 새로운 기능 을 정의 할 필요 가 없 이 덮어 쓰기 특성 을 사용 하여 부모 클래스 의 기능 정 의 를 보류 하고 다시 쓰기(덮어 쓰기)기능 의 내용 을 사용 합 니 다.
 
덮어 쓰기 주의사항:
하위 클래스 가 부모 클래스 를 덮어 쓰 려 면 하위 클래스 권한 이 부모 클래스 권한 보다 크 도록 해 야 합 니 다.그렇지 않 으 면 컴 파일 에 실 패 했 습 니 다.
정적 은 정적 만 덮어 쓸 수 있 습 니 다.
 
기억 하기:
다시 불 러 오기:같은 이름 함수 의 매개 변수 목록 만 봅 니 다.
덮어 쓰기:하위 클래스 방법 은 똑 같 아야 합 니 다.(방법 명 과 반환 값 형식 은 같 아야 합 니 다.)
Core in 자바 SE 5.0 부터 한 방법 이 다른 방법 을 덮어 쓸 때 더 엄격 한 반환 형식 을 지정 할 수 있 습 니 다.
반환 값 유형 에 대해 서 는 같은 유형 을 말 합 니 다.예 를 들 어 아버지 류 방법 에서 돌아 오 는 것 은 Father 입 니 다.그러면 자 류 를 덮 은 방법의 반환 값 은 Son 일 수 있 습 니 다.마치 아버지 류 는 당신 의 동물 을 되 돌려 주 는 방법 이 있 고 자 류 는 아버지 류 를 덮 는 방법 이 있 습 니 다. 개 한 마리 가 돌 아 왔 다.
인증 코드 는 다음 과 같 습 니 다:
 
class Father 
   {
   	void show(){
   		System.out.println("father");
   	}
   }
   
   class Son extends Father
   {
   	void show(){
   		System.out.println("Son");
   	}
   }
   
   class Fu
   {
   	Father done(){ //      Father
   		System.out.println("Fu done....");
   		return new Father();
   	}
   }
   
   class Zi extends Fu
   {
   	@Override
   	Son done(){ //      Son
   		System.out.println("......Zi done");
   		return new Son();
   	}
   }
   
   public class TestClass
   {
   	public static void main(String[] a){
   		Fu fu = new Zi();
   		fu.done().show();
   	}
   }

 
 
실행 결과:
---------- java ----------
......Zi done
Son
 
3.하위 클래스 의 구조 함수.
하위 클래스 대상 을 초기 화하 면 부모 클래스 의 구조 함수 도 실 행 됩 니 다.그것 은 하위 클래스 의 구조 함수 기본 첫 번 째 줄 에 암시 적 인 구문 슈퍼()가 있 기 때 문 입 니 다. 
super();부모 클래스 의 빈 매개 변수의 구조 함수 에 접근 할 수 있 으 며,하위 클래스 의 모든 구조 함수 의 기본 줄 은 슈퍼()입 니 다.
 
왜 하위 클래스 는 반드시 부모 클래스 의 구조 함 수 를 방문 해 야 합 니까?
부모 클래스 의 비 개인 속성 과 방법 으로 인해 하위 클래스 는 직접 가 져 올 수 있 습 니 다.하위 클래스 대상 이 만 들 때 부모 클래스 가 어떻게 이 데 이 터 를 초기 화 하 는 지 확인 해 야 합 니 다.따라서 하위 클래스 가 대상 에서 초기 화 하 는 것 은 먼저 부모 클래스 의 구조 함수 에 접근 하 는 것 입 니 다.부모 클래스 에서 지정 한 구조 함수 에 접근 하려 면 슈퍼()문 구 를 수 동 으로 정의 하 는 방식 으로 지정 할 수 있 습 니 다.
 
부모 클래스 에서 정의 하 는 기능(비 사유)자 류 는 직접 사용 할 수 있 습 니 다.구조 함수 호출"슈퍼();";일반 함 수 를"슈퍼"로 호출 합 니 다.
 
메모:슈퍼 문 구 는 구조 함수 의 첫 줄 에 정 의 됩 니 다.구조 함수 에 this 문구 가 있 거나 슈퍼 문구 가 있 습 니 다.
 
하위 클래스 의 실례 화 과정 결론:
하위 클래스 의 모든 구조 함 수 는 기본적으로 부모 클래스 의 빈 매개 변수의 구조 함수 에 접근 합 니 다.모든 구조 함수 의 첫 줄 에 암시 적 인 슈퍼()가 있 기 때 문 입 니 다.부모 클래스 에 빈 매개 변수의 구조 함수 가 없 을 때 하위 클래스 는 슈퍼 문장의 형식 을 통 해 접근 할 부모 클래스 의 구조 함 수 를 지정 해 야 합 니 다.
물론 하위 클래스 의 구조 함수 첫 줄 도 this 문 구 를 수 동 으로 지정 하여 본 클래스 의 구조 함 수 를 방문 할 수 있 습 니 다.하위 클래스 에 서 는 최소한 하나의 구조 함수 가 부모 클래스 의 구조 함수 에 접근 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기