자바 방법 리 셋 과 방법 리 셋 의 차 이 는 도대체 어디 에 있 습 니까?

방법 재 업로드 와 방법 재 작성 의 차이
방법 과부하
방법 을 다시 불 러 오 는 것 은 주로 한 종류 에서 방법 이름 이 같 고 매개 변수 목록 이 다 르 며 반환 값 유형 이 같 을 수도 있 고 다 를 수도 있 습 니 다.

/*
           ,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.방법 재 작성 은 하위 클래스 에 나타 나 고 서로 다른 관 계 를 나타 낸다.하위 클래스 재 작성 방법 은 부모 클래스 와 같은 방법 명,매개 변수 목록 과 반환 값 유형 이 있 지만 방법 내부 의 구체 적 인 조작 은 변화 가 생 길 수 있다.방법 재 작성 시 하위 클래스 방법의 범례 권한 이 부모 클래스 방법의 접근 권한 보다 낮 으 면 안 된다.
자바 방법 재 업로드 와 방법 재 작성 에 관 한 이 차 이 는 도대체 어디 에 있 습 니까?의 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 방법 재 업로드 와 방법 재 작성 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기