1 向上转型(不需要强制转换): 由抽象度低的类向抽象度高的类转型(子类—父类)

好处:可以操作和使用子类继承或重写的方法

失处:失去对子类新增成员变量和新增成员方法的操作和使用

 

2 向下转型(需要强制转换): 由抽象度高的类向抽象度低高的类转型(父类—子类)

sub s=(sub)new Father();//运行时出错,编译通过(父类不可以强制转换成子类,子类包含父类所没有的变量和方法)

异常:Exception in thread "main" java.lang.ClassCastException:

转换对象是在运行时进行转换的


 

编译运行都正常通过

因为此时f是一个子类实体对象,有具体的引用地址,强制转换成子类变量,引用地址传递给s

3 可以使用 引用变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。

 

 

 

父类引用指向子类对象。子类和父类中定义同名的变量时,仅仅是隐藏了,变量没有多态性;而对于覆盖的方法,Java表现出多态性,会调用更具体的子类里面的方法,无论从哪里调用,无论使用什么引用类型调用。(引用)