나는 안드로이드에 @Override 의 목적을 알고 싶어요.

1.


자바 주석을 @Override. 다음과 같은 방법을 다치게 컴파일러는 슈퍼 클래스의 메소드를 오버라이드 (override) 지시합니다. 예를 들어, 당신은 Person 클래스를 구현 말한다.

public class Person {
   public final String firstName;
   public final String lastName;

   //some methods

   @Override public boolean equals(Object other) {
      ...
   }
}

Person 클래스() 메소드가 있습니다. equals 메소드는 이미 사람의 슈퍼 클래스 객체에 정의되어 있습니다.

따라서 equlas 구현 () 명 public ()을 재정의한다. 즉,  (사람)를 재정의합니다.


명시적으로 재정의하지 않고 메서드를 재정의하는 것이 합법적입니다. 

따라서 @Override의 주석이 무엇을 의미합니까?

실수로 다음과 같은 방식으로 재정의하려고 하면 어떻게 됩니까?

public boolean equals(Person other) {
   ...
}

위의 경우에는 버그가 있다. 당신은 동등하게 재정의하려 했지만 당신은 그렇지 않았다.

왜요? () 같은 등식은 매개 변수를 매개 변수로 얻고 당신의 equals()을 매개 변수로 얻는다.


컴파일러가 당신이 오버 라이드 하고 싶어 하는 것을 알지 못했기 때문에 컴파일러는 당신에게 그 버그에 대해 알려 주지 않을 것이다.


컴파일러가 알 수 있는 한, 당신은 실제로 과부하를 의미한다. 


하지만 재정의를 사용하려고 시도한 경우에는 다음과 같은 항목을 사용합니다.

@Override public boolean equals(Person other) {
   ...
}

이제 컴파일러는 오류가 있다는 것을 알고 있다. 너는 무시하고 싶었지만 그렇지 않았다. 

따라서@재정의 주석을 사용하는 이유는 방법을 명시적으로 선언하는 것입니다.




2.

컴파일러가 super class에서 메서드를 재정의하도록 고안되었음을 컴파일러에게 알려 주는 자바 주석은 말할 것도 없다. 그것은 엄격히 필요하지는 않지만 컴파일 시 오류를 잡아내는 데 도움이 된다.


3.

@Override는 자바 스크립트입니다.

또한 슈퍼 클래스의 메소드 선언을 오버라이드 (override)하는 상처를 메소드 선언을 나타냅니다. 방법이 주석 형의 주석을 붙일 수 있지만, 슈퍼 클래스 메소드를 오버라이드 (override)하지 않는 경우, 컴파일러는 오류 메시지를 생성해야합니다.


Example:

class Parent{
    public void foo(){

    }
}

class Child extends Parent{
    //compile perfect !
    @override
    public void foo(){

    }
    //will show compile time error message here as it is not being overridden 
    @override
    public void foo(int i){

    }

}



출처 : https://stackoverflow.com/questions/4736212/meaning-of-android-override

+ Recent posts