java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。
什么叫父类引用指向子类对象,且听我慢慢道来.
从2个名词开始说起:向上转型(upcasting) 、向下转型(downcasting).
举个例子:有2个类,Father是父类,Son类继承自Father。
Father f1 = new Son(); // 这就叫 upcasting (向上转型)
// 现在f1引用指向一个Son对象
Son s1 = (Son)f1; // 这就叫 downcasting (向下转型)
// 现在f1还是指向Son对象
第2个例子:
Father f2 = new Father();
Son s2 = (Son)f2; // 出错,子类引用不能指向父类对象
你或许会问,第1个例子中:Son s1 = (Son)f1;问什么 是正确的呢。
很简单因为f1指向一个子类对象,Father f1 = new Son(); 子类s1引用当然可以指向子类对象了。
而f2 被传给了一个Father对象,Father f2 = new Father();子类s1引用不能指向父类对象。
总结:
1。父类引用指向子类对象,而子类引用不能指向父类对象。
2。把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转换。
如:Father f1 = new Son();
3。把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转换。
如:f1 就是一个指向子类对象的父类引用。把f1赋给子类引用s1即 Son s1 = (Son)f1;
其中f1前面的(Son)必须加上,进行强制转换。
分享到:
相关推荐
java转型
java数据类型,向上转型和向下转型定义与概念。
主要介绍了 Java 向上转型和向下转型的详解的相关资料,需要的朋友可以参考下
学习Java之如何正确地向上转型与向下转型.rar
主要介绍了Java向上转型和向下转型实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
什么是向下转型和向上转型
Java基础精品课12-抽象类录屏1.向下转型和向上转型.mp4
其实向上转型和向下转型都是很重要的,可能我们平时见向上转型多一点,向上转型也比较好理解。 但是向下转型,会不会觉得很傻,我是要用子类实例对象,先是生成子类实例赋值给父类引用,在将父类引用向下强转...
主要介绍了Java 转型(向上或向下转型)详解及简单实例的相关资料,需要的朋友可以参考下
如果你没写,Java会给你补上一个默认的构造函数。 3) 左边的 “Vehicle veh1”创建了一个Vehicle类引用变量。所谓Vehicle类引用,就是以后可以用来指向Vehicle对象的对象引用。 4)“=”操作符使对象引用指向刚创建...
java向上转型与向下转型
JAVA多态思维导图,便捷整理思路,多态的好处、多态的语法格式、多态中的两种类型转换:向上转型、向下转型
第一章面向对象的java实现--封装 一.封装 二....向上转型和向下转型 三.多态 四.封装、继承和多态之间的区别 第三章面向对象的java实现—接口 一.接口 二.常量 三.Java中的final关键字
向下转型164 6.2.4 动态绑定166 6.4 访问修饰符167 6.5 static修饰符168 6.5.1 静态变量168 6.5.2 静态方法169 6.5.3 静态代码块169 6.5.4 单态模式170 6.6 final修饰符171 6.7 abstract修饰符172 6.8 接口173 6.8.1...
向下转型(强制类型转换) 从父到子:父类引用转为子类的对象 子类 子类对象名 = (子类)父类对象; 好处: 向上转型:父类引用指向子类对象,提高了程序的扩展性。 向下转型:父类引用转为子类对象,可以访问子类的...
多态(polymorphism) “多态”理解 再论向上转型 多态内部机制 正确使用,私有、静态方法及域与多态关系 构造器-多态 协变的返回类型(Covariant return types) 用继承进行设计(纯继承与扩展、向下转型)
学习javaEE第十五天练习的代码,包含多态中父类最为返回值方法的应用、向上转型、向下转型,instanceof关键字、abstract修饰符、抽象类和抽象方法
主要介绍了Java多态用法与注意点,结合实例形式分析了java多态相关的向上转型、向下转型、隐藏等相关操作技巧,需要的朋友可以参考下
多态的优势 实现思路/实现多态的三个要素 向上转型规则(子类到父类转换) 向下转型(父类到子类转换) 实现多态形式 instanceof运算符
•将一个子类对像赋给父类,这就是向上转型。向上转型是自动的。 •强制类型转换: 类型转换运算符是小括号,语法如下(type)variable; instanceof运算符 •前一个操作通常是一个引用类型的变量,后一...