자바 방법 리 셋 과 방법 리 셋 의 차 이 는 도대체 어디 에 있 습 니까?
방법 과부하
방법 을 다시 불 러 오 는 것 은 주로 한 종류 에서 방법 이름 이 같 고 매개 변수 목록 이 다 르 며 반환 값 유형 이 같 을 수도 있 고 다 를 수도 있 습 니 다.
/*
,Food Snack , .
*/
public class Demo{
public void eat(Food food){
System.out.println(" ! " + food.name);
}
public void eat(Snack snack){
System.out.println(" ! " + snack.name);
}
public int eat(){
int money = 10;
System.out.println(" ! , ");
return 10;
}
//public void eat(){
// int money = 10;
// System.out.println(" ! , ");
//}
}
주의:매개 변수 목록 이 같 으 면 반환 값 형식 이 다 르 면 다시 불 러 오 는 것 이 아 닙 니 다.이 방법 은 바로 잘못 보 고 됩 니 다.호출 방법 을 사용 할 때 우 리 는 방법의 반환 값 유형 을 모 르 기 때문에 컴 파일 러 는 당신 이 호출 한 방법 이 어떤 방법 인지 구분 할 수 없습니다.분명 바보 가 될 것 입 니 다.그래서 형제 가 잘못 썼 다 고 말씀 드 리 겠 습 니 다!방법 재 작성
방법의 재 작성 은 자부 류 에 나타 나 는데 가장 전형 적 인 것 은 자 류 가 부 류 를 다시 쓰 는 방법 이다.
Father 류 와 Son 류 는 모두 Walk(boolean canRun)방법 이 있 습 니 다.
하지만 집행 할 때 결 과 는 달 랐 다.
public class Father {
private boolean canRun = false;
public boolean isCanRun() {
return canRun;
}
public void setCanRun(boolean canRun) {
this.canRun = canRun;
}
public void walk(boolean canRun){
if(canRun){
System.out.println(" !");
}else{
System.out.println(" , !");
}
}
}
public class Son extends Father{
boolean canRun;
public Son(boolean canRun){
this.canRun = canRun;
}
@Override
public void walk(boolean canRun) {
if(canRun){
System.out.println(" !");
}else{
System.out.println(" !");
}
}
}
public class Test {
public static void main(String[] args) {
Father father = new Father();
Son son = new Son(true);
father.walk(father.isCanRun());
son.walk(son.canRun);
}
}
여기 서 나타 난 것 은 바로 하위 Son 이 부류 중의 Walk()방법 을 다시 쓴 것 이다.메모:재 작성 여기에 중요 한 점 은 하위 클래스 재 작성 방법 이 부모 클래스 방법의 접근 권한 보다 낮 으 면 안 된다 는 것 입 니 다.
간단하게 이해 할 수 있 습 니 다.다 중 에서 부 류 는 하위 클래스 대상 을 가리 키 며,하위 클래스 대상 에서 재 작성 하 는 방법 권한 이 부모 클래스 방법 보다 낮 으 면 다 중 상황 에서 부 류 는 하위 클래스 의 방법 에 접근 할 수 없습니다.
public class Test {
public static void main(String[] args) {
Father father = new Son(true);
System.out.println(father.isCanRun()); // false
father.walk(father.isCanRun()); // !
}
}
여기 신기 하 다.내 Son 대상 이 만 들 어 졌 을 때 들 어 오 는 매개 변 수 는 true 인 데 왜 실행 결 과 는 !
일 까?여기 서 먼저 이 지식 점 의 소결 을 진행 하고 위의 문 제 는 다음 글 에서 설명 할 것 이다.
작은 매듭
1.방법 리 셋 은 같은 클래스 에서 같은 이름 의 방법 으로 매개 변수 목록 이 다른 상황(만족 해 야 함)에 나타 납 니 다.반환 값 유형 은 같 을 수도 있 고 다 를 수도 있 습 니 다.만약 에 두 가지 방법 으로 이름 이 같 으 면 매개 변수 목록 이 같 지만 반환 값 유형 이 다 르 면 리 셋 이 아 닙 니 다.
2.방법 재 작성 은 하위 클래스 에 나타 나 고 서로 다른 관 계 를 나타 낸다.하위 클래스 재 작성 방법 은 부모 클래스 와 같은 방법 명,매개 변수 목록 과 반환 값 유형 이 있 지만 방법 내부 의 구체 적 인 조작 은 변화 가 생 길 수 있다.방법 재 작성 시 하위 클래스 방법의 범례 권한 이 부모 클래스 방법의 접근 권한 보다 낮 으 면 안 된다.
자바 방법 재 업로드 와 방법 재 작성 에 관 한 이 차 이 는 도대체 어디 에 있 습 니까?의 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 방법 재 업로드 와 방법 재 작성 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.