나는 A1과 A2에 의해 구현되는 foo와 bar 메소드를 가진 클래스 A를 가지고있다. A1과 A2의 기능은 동일합니다. 다른 말로하면 :가상 구현에서 파생 된 형식에 대한 정적 메서드 호출? (안드로이드)
public class A {
public int foo() { return 0; };
public int bar() { return 1; };
}
class A1 extends A {
public int AnotherFooFunction() { return foo(); }
public int AnotherBarFunction() { return bar(); }
}
class A2 extends A {
public int AnotherFooFunction() { return foo(); }
public int AnotherBarFunction() { return bar(); }
}
이러한 방식으로 코드를 유지하거나 정적 메서드로 가상 메서드를 교체하는 것이 더 좋습니까? (Java의 경우 비 최종/비공개는 모두 가상으로 간주됩니다.)
Android 개발자 문서의 Designing for Performance 섹션에 따르면 이러한 정적 메소드에 대한 가상 메소드를 교체해야합니다. 그래서 위는 다음과 같습니다.
public class A {
public int foo() { return 0; };
public int bar() { return 1; };
}
class A1 extends A {
public int AnotherFooFunction() { return A.foo(); }
public int AnotherBarFunction() { return A.bar(); }
}
class A2 extends A {
public int AnotherFooFunction() { return A.foo(); }
public int AnotherBarFunction() { return A.bar(); }
}
이것이 "해야합니까?" 나는 내가 문서에서이 단락을 잘못 해석하고 있음을 충분히 깨달았다.
마지막 코드 샘플에서'class A '의 메소드를'public static int'로 선언 했습니까? – mob