У меня есть класс A с методами foo и bar, которые реализованы A1 и A2.Функциональность в 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, я должен поменять эти виртуальныеметоды для статических.Таким образом, вышеприведенное становится:
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(); }
}
Так ли это должно быть?Я полностью понимаю, что могу неправильно истолковать этот параграф в документации.