У меня есть класс A, который является абстрактным классом, класс B является конкретным и расширяет A.
Вызов B.class.getDeclaredMethods() возвращает подписи класса A в дополнение к классу B, но документация JAVA говорит о чем-то отличном от getDeclaredMethods()
"Это включает общедоступный, защищенный, стандартный (пакетный) доступ и частные методы, но исключает унаследованные методы".
Итак, из вышеперечисленных документов я ожидал, что метод foo(), который унаследован от абстрактного родительского класса, не должен возвращаться из вызова getDeclaredMethods()
, но я получаю метод foo(), который наследуется от абстрактного родительского класса, возвращается из getDeclaredMethods()
.
import java.lang.reflect.*;
public class B extends A {
public static void main(String[] args) throws Exception {
Method[] methods = B.class.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
System.out.println(methods[i]);
}
}
}
abstract class A {
public void foo() {
}
}
Может кто-нибудь объяснить мне такое поведение.