Java对象向上转型和向下转型


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

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

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

 

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

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

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

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



 

编译运行都正常通过

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

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

 

 

 

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM