자바 에서 부모 클래스 를 다시 쓰 는 방법 추가 여부@Override 상세 설명

자바 부모 클래스 재 작성 방법 추가 여부@Override
이것 은 제 가 자바 를 처음 배 웠 을 때 겪 은 문제 입 니 다.저 와 같은 초보 자 들 이 공부 할 때 도움 을 주 고 싶 습 니 다.잘못 이 있 으 면 지적 해 주 십시오.감사합니다!

class Father{
    public String name;
    public int age;
    public Father(){
    }
    public void work(){
        System.out.println("   ");
    }
}
class Son extends Father{
    public int weight;
    public Son(){
    }
    public void work(){
        System.out.println(i);
    }
}
상면 류 의 work()방법 과 기류 work()방법의 컨트롤 러 유형(반환 값 유형,파라미터 등 포함)은 완전히 일치 합 니 다.이 경우@Override 를 추가 하지 않 아 도 되 고 기류 방법 을 다시 쓸 수 있 습 니 다.
쓰 지 않 은 상태 에서 자바 가상 기 회 는 자동 으로 인식 되 기 때문이다.

class Son extends Father{
    public int weight;
    public Son(){
    }
    public int work(int i){
        System.out.println();
    }
}
위 와 같은 상황 에서 work()방법 은 시스템 에 의 해 하위 클래스 의 새로운 정의 방법 으로 여 겨 지고 기 류 를 계승 하지 않 는 것 도 허용 된다.

class Son extends Father{
    public int weight;
    public Son(){
    }
    public int work(){
        System.out.println();
        return 1;
    }
}
그러나 이 경우 반환 값 형식 만 수정 할 때 허용 되 지 않 습 니 다.기본 클래스 의 재 작성 으로 간주 되 지만 반환 값 형식 이 바 뀌 면 편집기 에서 기본 클래스 의 재 작성 반환 값 형식 이 일치 하지 않 는 다 고 판단 하여 오 류 를 보고 합 니 다.
따라서 존재 하 는 것 이 합 리 적 입 니 다.코드 를 작성 할 때 기본 클래스 를 다시 쓰 는 것 이 좋 습 니 다.@Override 를 추가 하 는 것 이 좋 습 니 다.무시 하기 쉬 운 오 류 를 감지 할 수 있 습 니 다.
@Override 의 역할
@Override 는 위조 코드 로 재 작성(물론 쓰 지 않 아 도 된다)을 표시 하지만 다음 과 같은 장점 이 있 습 니 다.
1.주석 으로 사용 할 수 있 고 읽 기 편 합 니 다.
2.컴 파일 러 는@Override 아래 의 방법 명 이 부모 클래스 의 모든 것 인지 검증 할 수 있 습 니 다.없 으 면 잘못 보고 할 수 있 습 니 다.
예 를 들 어@Override 를 쓰 지 않 았 다 면 다음 방법 명 을 잘못 썼 습 니 다.이때 컴 파일 러 는 컴 파일 을 통 과 했 습 니 다.컴 파일 러 는 이 방법 이 하위 클래스 에서 자신 이 증가 하 는 방법 이 라 고 생각 하기 때 문 입 니 다.
예:부모 클래스 의 onCreate 를 다시 쓸 때 방법 앞 에@Override 시스템 을 추가 하면 방법의 정확성 을 검사 할 수 있 습 니 다.

@Override
public void onCreate(Bundle savedInstanceState)
{…….}
이런 문법 은 정확 하 다.만약 당신 이 쓴다 면:

@Override
public void oncreate(Bundle savedInstanceState)
{…….}
컴 파 일 러 는 다음 과 같은 오 류 를 보고 합 니 다.
The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method
onCreate 방법 을 정확하게 다시 쓸 수 있 도록 합 니 다.
만약@Override 를 추가 하지 않 는 다 면 컴 파일 러 는 오 류 를 감지 하지 않 고 하위 클래스 에 새로운 방법 을 정의 했다 고 생각 할 것 입 니 다:oncreate
추가 여부@override 는 어떤 차이 가 있 습 니까?
1.간단하게 말 하면@override 주 해 는 컴 파일 러 에 게 알려 주 는 것 이 고 다음 방법 은 부모 클래스 를 다시 쓰 는 방법 입 니 다.
2.@override 주 해 를 쓰 지 않 고 직접 재 작성 방법 을 쓰 면 컴 파일 러 는 부모 클래스 의 방법 을 정확하게 재 작성 한 것 인지 아 닌 지 판단 하지 못 합 니 다.
재 작성 방법 이 부모 클래스 와 다 를 경우 프로그램 은 오 류 를 알 리 지 않 습 니 다.이것 은 잠재 적 인 bug 를 남 길 것 이다.
@override 주 해 를 썼 을 때 프로그램 은 부모 클래스 의 대응 방법 을 정확하게 다시 썼 는 지 판단 합 니 다.
그리고 이 주 해 를 더 하면 프로그램 이 부모 클래스 를 자동 으로 차단 하 는 방법 입 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기