자바 - 이해 방법 호출
1) 컴 파일 러 는 대상 의 성명 유형 과 방법 명 을 보고 x. f (param) 를 호출 하고 암시 적 매개 변수 x 는 C 의 대상 이 라 고 가정 합 니 다.주의해 야 할 것 은 이름 에 대한 f 가 존재 할 수 있 지만 매개 변수 유형 이 다른 방법 입 니 다.주의 (초 클래스 의 개인 적 인 방법 은 접근 할 수 없습니다)
2) 다음 에 컴 파일 러 는 호출 방법 을 볼 때 제공 하 는 매개 변수 유형 을 보고 f 라 는 모든 방법 에 제 공 된 매개 변수 유형 과 완전히 일치 하 는 것 이 있 으 면 이 방법 을 선택 하 십시오.이 과정 을 과부하 해석 이 라 고 합 니 다.
2。방법의 이름과 매개 변수 목록 을 방법의 서명 이 라 고 합 니 다.하위 클래스 에서 부모 클래스 의 이름과 같은 방법 을 정의 하면 하위 클래스 의 이 방법 은 부모 클래스 의 같은 이름 을 덮어 쓰 는 방법 입 니 다.그러나 반환 형식 은 이름 의 일부분 이 아니 므 로 덮어 쓰 는 방법 은 반환 형식의 호환성 을 확보 해 야 합 니 다. 하위 클래스 는 덮어 쓰 는 방법의 반환 유형 을 원래 의 반환 형식의 하위 형식 으로 정의 할 수 있 습 니 다. 예 를 들 어:
public class Car {
private String name =" ";
public Car echo() {
return new Car();
}
public class BMWCar extends Car {
public BMWCar echo() {
// TODO Auto-generated method stub
return new BMWCar();
} echo 라 는 방법 이 뒤의 BMWCar 에 덮 여 있 음 을 알 수 있 습 니 다. 우 리 는 이 두 echo 방법 이 협 변 (타협, 강요당 하 는 유형) 의 반환 유형 을 가지 고 있다 고 말 합 니 다.
3. 호출 방법의 해석 과정
Employee :getName->Employee.getName()
getSa->Employee.getSa()
getHa->Employee.getHa()
rS(double)->Employee.rS(double)
Manager : getName->Employee.getName()
getSa->Employee.getSa()
getHa->Employee.getHa()
rS(double)->Employee.rS(double)
sB(double)->Manager.sB(double) 실행 중 employee. getSa () 해석 호출:
1. 우선 가상 컴퓨터 에서 employee 의 실제 유형 을 추출 하 는 방법 표 입 니 다.Employee, Manager 의 방법 표 일 수도 있 습 니 다.Employee 류 의 다른 하위 클래스 의 방법론 일 수도 있 습 니 다.
2. 그리고 가상 컴퓨터 검색 은 getSa 의 종 류 를 정의 합 니 다.이때 가상 컴퓨터 는 어떤 방법 을 사용 해 야 하 는 지 이미 알 고 있다.
3. 마지막 으로 가상 컴퓨터 호출 방법.
메모: 동적 바 인 딩 은 매우 중요 한 특성 이 있 습 니 다. 기 존 코드 를 수정 하지 않 아 도 프로그램 을 확장 할 수 있 습 니 다.
경고: 한 가지 방법 을 더 덮어 쓸 때 하위 방법 은 부모 방법의 가시 성 보다 낮 으 면 안 됩 니 다.특히 부모 클래스 방법 이 Public 라면 하위 클래스 방법 은 반드시 Public 라 고 밝 혀 야 한다.이러한 오류 가 자주 발생 합 니 다. 하위 클래스 방법 을 설명 할 때 Public 수식 자 를 빠 뜨 렸 습 니 다.이때 컴 파 일 러 는 더 엄격 한 접근 권한 을 제공 하려 는 시도 로 해 석 될 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.