Java向上转型和向下转型
(尊重劳动成果,转载请注明出处: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类定义了自己的新方法@Testpublic void test(){Person p = new Child();p.function();System.out.println(p.age);}
}
此时将输出:
“this is child”
0
并且我们是不能使用p.b1()的,编译错误,因为,此时该对象p已经失去了该方法。
向上转型的作用:
这里以父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。
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#管理一枚。欢迎大家进来交流技术。
Java向上转型和向下转型相关推荐
- 【Java挠头】继承、抽象、接口、多态、向上转型、向下转型等精妙干货
–本文摘要– 1.本文的目标读者:是了解Java基础,且对面向对象概念有所了解,但是对Java中继承.抽象类.接口.多态等等概念搞不清的初学者. 2.本文的内容摘要:讲述Java中的一 ...
- 重新精读《Java 编程思想》系列之向上转型与向下转型
前言 今天重读了一下向上转型与向下转型,有些新的体会,了解了向上转型的好处,及如何向下转型.在此分享给大家. 向上转型 向上转型是用来表现新类和基类之间的关系.在传统中,由导出类转型成基类,在继承图中 ...
- 第三次学JAVA再学不好就吃翔(part35)--多态向上转型和向下转型
学习笔记,仅供参考 文章目录 面向对象 多态 多态向上转型和向下转型 多态的好处和弊端 面向对象 多态 多态向上转型和向下转型 我们首先通过以下代码复习一下自动类型提升和强制类型转换: class B ...
- Java转型(向上转型和向下转型)
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就 ...
- [JAVA]向上转型与向下转型
要理解多态性,首先要知道什么是"向上转型"."向下转型". 对象的多态性:父子类对象的转换 **向上转型:**子类对象变为父类对象,语法: 父类 父类对象 = ...
- Java中的向上转型及向下转型
我们都知道Java的三大特性:封装.继承.多态. Java中的向上转型及向下转型体现了Java中的继承性及多态性,所谓继承,不难理解,存在于子父类间,子类继承父类中不被私有化的属性和方法.而多态性,顾 ...
- java 对象向上转型_JAVA对象向上转型和向下转型
今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...
- JAVA中的向上转型和向下转型
一.向上转型和向下转型 向上转型和向下转型是在JAVA继承操作中用到的东西,在讲到转型之前我们需要认识到继承过程中的对象类型转换,这种转换有两个特点: 1.这是继承过程中发生 ...
- java 向下转型运行时错误_Java向上转型和向下转型
首先定义父类Animal,所有动物都有一个吃东西的方法:子类Dog还增加了一个叫的功能. public classAnimal {public voideat() { System.out.print ...
- java 泛型向下转型_Java向上转型和向下转型(附具体样例)
Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一.向上转型 package com.sheepmu; class Animal { pu ...
最新文章
- 中柏平板触摸驱动_工业平板电脑触摸屏种类及故障解决办法,赶紧收藏起来
- 计算机考到贴吧的试题,2014年全国计算机二级VB上机考试试题七
- iOS中下载大型文件的原理解析二
- mysql从多个表查询数据类型_MySQL 之 多表查询
- Java父类强制转换子类原则
- CreateThread和_beginthreadex的区别
- 好难啊……一个 try-catch 问出这么多花样
- Scala官网下载不下来问题-已解决
- 程序员面试金典——18.12最大和子矩阵
- activity finish后没有destroy_Activity 基础知识点
- 用excel和python做数据分析的优缺点
- 谷歌高级软件工程师的一天
- Maven依赖冲突问题解决方案
- 求一款快捷回复工具聊天辅助软件手机版(聊天微快聊回复助手)
- [agc015f]Kenus the Ancient Greek
- 域格4G模块TTS语音使用方法
- APP - 查询名下微信实名账户(可注销微信封号账户支付功能)
- 古人对梦的解释_中国古代对梦的解释-精选文档
- 跨境电商平台大全,总有一个适合你
- 【GCN-RS】多行为推荐:Multi-behavior Recommendation with Graph Convolutional Networks (SIGIR‘20)