如何判断两个类之间的父子关系?
java为我们提供了instanceof运算符,可以用来判断一个对象是否是否个类的实例,所以很容易的想到子类的对象肯定是父类的实例。但是如何所涉及到的类是不可实例化的该怎么办呢?好在java的Class为我们提供了isAssignableFrom方法,用该方法可以在不用实例化对象时判断两个类之间是否存在父子关系,包括接口继承之间的判断。
代码如下:
1 public class Father { 2 private String name; 3 4 public Father(String name) { 5 this.name = name; 6 } 7 public void method(){ 8 System.out.print("I am father"); 9 }10 }11 public class Child extends Father {12 private int score;13 14 public Child(String name, int score) {15 super(name);16 this.score = score;17 }18 19 @Override20 public void method() {21 System.out.println("I am child");22 }23 }24 public class Client {25 public static void main(String[] args){26 Father father = new Father("aaa");27 Child child = new Child("bbb",90);28 if(father.getClass().isAssignableFrom(child.getClass())){29 System.out.println(child.getClass().getName() + " ==> "+father.getClass().getName());30 }31 }32 }