Java 如何在抽象父类中获取子类的重写内容信息

Java 如何在抽象父类中获取子类的重写内容信息,java,inheritance,abstract-class,Java,Inheritance,Abstract Class,如何在抽象父类中获取有关子类重写方法信息的信息。 例如: 如何获取c类仅重写a2和类的信息 B覆盖a1您可以执行以下操作(通过refelction): //您可以检查返回类的anme,如果它是给定方法的一个,则不重写该方法,如果它是子类名,则重写它 编辑: 您也可以在循环中执行此操作: Method[] m = class.getMethods(); for(int i = 0; i < m.length; i++) { // returns t

如何在抽象父类中获取有关子类重写方法信息的信息。 例如:

如何获取c类仅重写a2和类的信息
B覆盖a1

您可以执行以下操作(通过refelction):

//您可以检查返回类的anme,如果它是给定方法的一个,则不重写该方法,如果它是子类名,则重写它

编辑:

您也可以在循环中执行此操作:

      Method[] m = class.getMethods();
      for(int i = 0; i < m.length; i++) {

         // returns te declaring class
         Class dec = m[i].getDeclaringClass();

         // displays all methods
         System.out.println("Method = " + m[i].toString());
         System.out.println(" Declaring class: " + dec.toString());
      }
Method[]m=class.getMethods();
对于(int i=0;i
我不明白你的问题。您的意思是如何检查方法是否已被重写?一些额外的具体细节将有助于理解您遇到的问题。一般来说,在一个好的设计中,
a
应该总是假设它的子类拥有它所有方法的有效实现。这就是合同的要点!如果
a1
仅适用于
A
的一些子类,则使用
a1
的逻辑很可能应推送到需要它的子类。
java.lang.Class class = B.class; // or any other child class
Class dec = class.getMethod("YourMEthodNAme").getDeclaringClass();
System.out.println(" Declaring class: " + dec.toString());
      Method[] m = class.getMethods();
      for(int i = 0; i < m.length; i++) {

         // returns te declaring class
         Class dec = m[i].getDeclaringClass();

         // displays all methods
         System.out.println("Method = " + m[i].toString());
         System.out.println(" Declaring class: " + dec.toString());
      }