java向上转型和向下转型1
在java继承体系中,认为父类(超类)在上层,子类在下层(派生类) ,向上转型就是把子类对象转成父类对象。
public class Father {
public void eat(){
System.out.println("我是父类的方法吃。。。。。");
}
}
public class Son extends Father{
public void eat(){
System.out.println("我是Son的方法吃。。。。。");
}
public void sleep(){
System.out.println("Son睡觉");
}
}
测试
public static void main(String[] args) {
Father f=new Son();//子类向上转型
Person p=new Son();//普通的new
f.eat();
//f.sleep();无法调用此方法 此方法不存在
p.eat();
p.sleep();
}
运行结果: 我是子类的方法吃
我是子类的方法吃
睡觉
此处无法调用f.sleep() ,就是向上转型之后会失去父类中没有定义的方法,只能调用父类中定义的方法。那到底 向上转型有什么用处那 为何不直接那子类自己定义的对象直接调用?
如果直接new Son() 打点调用也可以 这样就没有体现出面向对象的抽象的编程思想,而且 代码的可扩展性差。
若果该父类还有一个子类Son1
public class Son1 extends Father {
public void eat(){
System.out.println("son1 的eat方法");
}
public void sleep(){
System.out.println("son1 的sleep方法");
}
}
看下边测试代码
public class Test {
public static void main(String[] args) {
tt(new Son());
tt(new Son1());
}
public static void tt(Son son){
son.eat();
}
public static void tt(Son1 son){
son.eat();
}
}
我的tt方法 中需要调用 各个子类的一些或所有方法,代码如上所示,假若我有很多个子类 这样 代码就显的特别沉于 重复率太高
向上转型就可以完美的解决此类问题:无论我有多少个子类都可以 一个方法搞定。。
public class Test {
public static void main(String[] args) {
tt(new Son());
tt(new Son1());
}
public static void tt(Father son){
//父类对象当做实例化参数
son.eat();
}
}
java向上转型和向下转型1的更多相关文章
- Java入门记(二):向上转型与向下转型
在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转 ...
- Java中的向上转型和向下转型
首先要明白一点向上转型和向下转型他们都是建立在继承的基础上. 一.向上转型 子类到父类的转换通常称作向上转型,通俗的说就是定义父类对象指向子类对象. 下面通过一个例子来深入理解向上转型. //定义一个 ...
- Java转型(向上转型和向下转型)
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就 ...
- JavaSE(五)JAVA对象向上转型和向下转型
今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...
- JAVA的向上转型和向下转型怎么理解呢?
在定义中是子类向父类转型称为向上转型,父类向子类转型是向下转型(必须先向上转型过,才能向下转型), 但是在下面类定义后,我得到的结果却不同.求大佬解惑 class superclass{ public ...
- Java多态的向上转型和向下转型
Java多态的向上转型和向下转型 向上转型:(子类转为父类,自动转型) 格式 :父类类型 变量名 = new 子类类型(); 注:子类赋值给父类,那这时这个父类就能调用子类的方法 向下转型:(父类转为 ...
- java 向上转型和向下转型
学习向上转型和向下转型怎么用没多难,但是为什么那样用,我搞了很多次没弄明白.没弄明白的原因是平时学习时之看例子,而例子一般都比较简单,没有对象之间的调用,一般就是一个对象调用自己的方法. 首先看下怎么 ...
- “全栈2019”Java第五十三章:向上转型和向下转型详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java向上转型和向下转型(附具体样例)
Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一 ...
- 重新精读《Java 编程思想》系列之向上转型与向下转型
前言 今天重读了一下向上转型与向下转型,有些新的体会,了解了向上转型的好处,及如何向下转型.在此分享给大家. 向上转型 向上转型是用来表现新类和基类之间的关系.在传统中,由导出类转型成基类,在继承图中 ...
随机推荐
- iOS中 iOS10 权限崩溃问题 韩俊强的CSDN博客
iOS10 权限崩溃问题 每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 今天 手机升级了 iOS10 Beta,然后用正在开发的项目 装了个ipa包,发现点击有 ...
- 05 利用Appliction 传值Activity
步骤一:新建一个类继承Application必须是public class 不然直接奔溃 步骤二:在清单文件AndroidManifest.xml的application添加name属性 值为com. ...
- C语言获取文件大小
C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在C语言中就比较麻烦,例如获取一个文件的大小.Java中File类有个length函数,Python中os.path包中有个getsize ...
- 【原创】Nginx+PHP-FPM优化技巧总结
php-fpm的安装很简单,参见PHP(PHP-FPM)手动编译安装.下面主要讨论下如何提高Nginx+Php-fpm的性能. 1.Unix域Socket通信 之前简单介绍过Unix Domain S ...
- quartz 时间设置(定时任务scheduler)
quartz用来设置定时任务的作业调度程序.在linux的crontab中用到. 格式为: * * * * * * * 其从左到右顺序代表 :[秒] [分] [小时] [日] [月] [周] [年] ...
- findViewById中NullPointerException的错误
最近在弄一个对话框的登录时,发现一个总是报NullPointerException的错误,折腾了两小时,一直没有发现细小的区别..先上图,一边说明原因 首先是 Activity类中定义的findVie ...
- MySQL 数据库开发的 36 条军规
MySQL 数据库开发的 36 条军规 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算:cpu计算务必移至业务层 ...
- Android项目-高考作文-AsyncTask的不足
1, AsyncTask的不足. 从android4.0开始, 后台只允许一个AsyncTask执行, 如果当前的AsyncTask没有执行完毕, 那么当前的请求一直处于等待状态. 直到上一个执行完毕 ...
- C#之DirectoryInfo操作
在C#中的System.IO命名空间下有大量的库供我们使用,下面一起来看一下DirectoryInfo的使用吧. code: using System; using System.Collection ...
- Microsoft Office Excel cannot access the file, There are several possible reasons
今天在做EXCEL打印读取模板时报错了,错误信息如下: Microsoft Excel cannot access the file 'D:\xx.xlsx'. There are several p ...