Java向上转型和向下转型
来源:互联网 发布:garageband知乎 编辑:程序博客网 时间:2024/06/09 19:33
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/75530403冷血之心的博客)
向上转型:父类引用指向子类对象 向下转型:子类引用指向父类对象
举例:Father是父类,Son是子类
Father f1 = new Son(); // 这就叫 upcasting (向上转型), 现在f1引用指向一个Son对象
Son s1 = (Son) f1; // 这就叫 downcasting (向下转型),现在f1还是指向Son对象
举例:Father是父类,Son是子类
Father f2 = new Father();
Son s2 = (Son) f2; // 编译不出错,运行时出错(除非子类和父类拥有相同的属性和方法),子类引用不能指向父类对象
向上转型:父类引用指向子类对象,将会丢失子类和父类中不一致的方法,并且父类引用调用的变量只能是父类中的。
举例:
class Person{ private String name = "Person"; int age=0; public void function() {System.out.println("this is person");}}public class Child extends Person{ public String grade; int age=10; public void function() {System.out.println("this is child");} public void b1(){ System.out.println("子类新方法"); } //B类定义了自己的新方法 @Test public void test(){ Person p = new Child(); p.function(); System.out.println(p.age); }}
此时将输出:
“this is child”
0
向上转型的作用:
这里以父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。
public class Main{ public static void main(String[] args) { dosleep(new Male()); dosleep(new Female()); } public static void dosleep(Human h) { h.sleep(); } } class Human { public void sleep() { System.out.println("Human sleep.."); } } class Male extends Human { @Override public void sleep() { System.out.println("Male sleep.."); } } class Female extends Human { @Override public void sleep() { System.out.println("Female sleep.."); } }
如果dosleep以子类对象为参数,则有多少个子类就需要写多少个函数。这也体现了JAVA的抽象编程思想。
如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以进群366533258一起交流学习哦~
本群给大家提供一个学习交流的平台,内设菜鸟Java管理员一枚、精通算法的金牌讲师一枚、Android管理员一枚、蓝牙BlueTooth管理员一枚、Web前端管理一枚以及C#管理一枚。欢迎大家进来交流技术。
阅读全文
1 0
- java 向上转型和向下转型
- java 向上转型和向下转型
- Java 向上转型和向下转型
- java向上转型和向下转型
- java中的向上转型和向下转型
- Java中的向上转型和向下转型
- java中的向上转型和向下转型
- java中的向下转型和向上转型
- Java 向上转型和向下转型
- java向上转型和向下转型
- Java的向上转型和向下转型
- java向上转型和向下转型
- Java 向上转型和向下转型
- Java向上转型和向下转型
- java向上转型和向下转型
- Java-向上转型和向下转型
- java向上转型和向下转型
- java向上转型和向下转型
- VF01 开票拆分
- SQL注入中级
- js typeof 和instanceof的区别
- 海思3516A_D接口说明及技术参数
- CSS浮动
- Java向上转型和向下转型
- Build of instance xxx aborted: Block Device Mapping is Invalid.执行块设备映射失败
- 《Spring3实战》摘要(3-2)--最小化Spring XML配置之自动检测Bean
- Error:Could not find wechat-sdk-android-with-mta.jar
- js 性能优化
- 简易音乐播放器(本地播放)
- java二维数组实现杨辉三角
- C/C++计算字符串最后一个单词的长度
- 用WampServer搭建本地服务器踩过的坑:phpMyAdmin的初始用户名密码