Java中父类和子类的类型转换解惑
2012-09-19 13:01
399 查看
我们平时经常在项目中经常会看到这样的场景,为实现java运行时绑定的多态性,以父类引用指向子类对象
如
但是,在这种情况下,我们只能通过p调用父类的方法,而不能调用子类的特有方法。所以如果我们想调用子类的特有方法的话就要通过强制类型转换来实现。
如
还有另外一种情况,就是将父类引用指向父类对象,而后将父类引用强制转换为子类引用
如
java的开发者认为这样毫无意义,所以在开发过程中我们不能这样做,JVM会包类型转换错误的异常。
如
Parent p = new Son()这样做的好处是代码扩展性强,耦合性低。比如一个方法接受Parent的参数类型,那么我们可以再调用方法的时候传递任何一个继承了Parent类型的子类对象作为实参。这样就实现了运行时绑定。
但是,在这种情况下,我们只能通过p调用父类的方法,而不能调用子类的特有方法。所以如果我们想调用子类的特有方法的话就要通过强制类型转换来实现。
如
((Son)p).s1() 或 Son s = (Son)p这就是父类和子类的类型转换存在的意义。
还有另外一种情况,就是将父类引用指向父类对象,而后将父类引用强制转换为子类引用
如
Parent p = new Parent(); Son s = (Son)p;
java的开发者认为这样毫无意义,所以在开发过程中我们不能这样做,JVM会包类型转换错误的异常。
相关文章推荐
- java 父类、子类 类型转换【父类不能转为子类】
- Java初涉之2--父类和子类的类型转换
- Java 父类与子类 类型转换
- JAVA学习(10) 继承(6) 使用父类类型调用子类
- java 子类与父类 转换
- Java中父类强制转换成子类的原则
- java 用户自定义的父类转换成子类的方法
- java中父类与子类的转换问题
- java 父类 子类 相互转换
- java继承实质、父类引用指向子类对象(多态)、声明时类型、运行时类型
- 5.1 父类和子类的类型转换总结
- 思想:java中,父类的方法中传入的形参的数据类型是泛型,子类的方法的形参想只要一种确定的数据类型,子类该如何做呢?
- Java父类取得子类传递的泛型参数Class类型
- Java中父类强制转换成子类的原则
- Java子类强制转父类类型不会变
- JAVA中子类与父类相互转换
- java 父类强制转换为子类
- JAVA父类对象与子类对象-造型转换[转]
- java方法重载和覆盖、子类与父类的转换
- java中父类转换为子类