一、 java中的向上转型,一般是使用子类实例对象初始化父类对象引用,这种方式一般是安全的,一般为隐身的转换,初始化后的对象只能调用父类的方法和属性,如接口,抽象类的实例化等大多采用这种方式。
二、而java中的向下转型,是使用父类实例对象初始化子类实例对象,这个时候就是不安全的,在向下转型时,为了保证转型的安全性要做一下两步:
1)使用instanceof进行对象判断,格式为(父类对象) instanceof (子类名)
2) 若返回的是真,则可以进行转化,否则则不可。
三、java中getClass 和instanceof的区别
class A { }
class B extends A { }
Object o1 = new A();
Object o2 = new B();
o1 instanceof A => true
o1 instanceof B => false
o2 instanceof A => true // <================ HERE
o2 instanceof B => true
o1.getClass().equals(A.class) => true
o1.getClass().equals(B.class) => false
o2.getClass().equals(A.class) => false // <===============HERE
o2.getClass().equals(B.class) => true