Java上转型和下转型对象
作者:laozhang 发布时间:2021-07-11 13:37:47
标签:Java,上转型,下转型
上转型对象:子类创建对象 并将这个对象引用赋值给父类的对象。
语法格式:Father f=new Son();
注意事项:
上转型对象是由子类创建的,但上转型对象会失去子类的一些属性和方法。
上转型对象调用方法时,就是调用子类继承和重写过的方法。而不会是新增的方法,也不是父类原有的方法。
上转型对象可以操纵父类原有的属性和功能,无论这些方法是否被重写。
上转型对象可以再强制转换到一个子类对象,强制转换过的对象具有子类所有属性和功能。
代码示例:
public class Shangz{ //父类
int a=1;
int b=2;
void cal(){ //父类自己的方法
System.out.println(a*b);
}
public static void main(String[] args) {
Shangz s=new ShangzDemo();
s.cal(); //上转型对象调用子类的方法
s.err(); //报错,上转型对象失去了子类的属性
}
}
class ShangzDemo extends Shangz{ //子类继承父类
void cal(){ //子类重写父类的方法
System.out.println(a+b);
}
void err(){ //子类自己的方法
System.out.println(a/b);
}
}
下转型对象:父类引用的对象转换为子类的类型(强制类型转换)。
语法格式:
Father f=new Son();
Son s=(Father)f;
错误语法:(编译不报错,运行报错)
Father f=new Father();
Son s=Son(f);
注意事项:
向下转型必须先向上转型,否则会发生异常。
下转型对象可以引用子类和父类的属性和方法。
代码例子:
public class Shangz{ //父类
int a=1;
int b=2;
void cal(){ //父类自己的方法
System.out.println(a*b);
}
public static void main(String[] args) {
Shangz s=new ShangzDemo();
ShangzDemo d=(ShangzDemo)s;
d.cal(); //调用了父类的方法
d.div(); //对象调用子类的方法
Shangz serr=new Shangz();
ShangzDemo derr=(ShangzDemo)serr;
derr.cal(); //编译不报错,运行出现转换异常
}
}
class ShangzDemo extends Shangz{ //子类继承父类
void cal(){ //子类重写父类的方法
System.out.println(a+b);
}
void div(){ //子类自己的方法
System.out.println(a/b);
}
}
最后:对象转型在泛型中使用较多。
来源:https://www.idaobin.com/archives/595.html


猜你喜欢
- Jackson,我感觉是在Java与Json之间相互转换的最快速的框架,当然Google的Gson也很不错,但是参照网上有人的性能测试,看起
- 在页面提交到tomcat乱码 解决方法是在tomcat/conf/server.xml中进行配置以tomcat6.0.32为例,需将以下代码
- 介绍MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。比如执行前、执行后或者对SQL结果集处理、sql入参处理等,这样就可以在
- 三层架构将整个业务应用划分为:(1)界面UI层(2)业务逻辑层(3)数据访问层对于复杂的系统分层可以让结构更加清晰,模块更加独立,便于维护。
- 本文实例讲述了C#自定义控件实现TextBox禁止粘贴的方法。分享给大家供大家参考,具体如下:开发环境:Visual Studio .net
- 前言碎语Disruptor是英国LMAX公司开源的高性能的线程间传递消息的并发框架,和jdk中的BlockingQueue非常类似,但是性能
- 项目中遇到C#调用C++算法库的情况,C++内部运算结果返回矩形坐标数组(事先长度未知且不可预计),下面方法适用于访问C++内部分配的任何结
- 代理OkHttp 支持设置代理,使用OkHttpClient.proxy()即可设置。什么是代理?根据代理的对象不同,可分为正向代理和反向代
- 一、this关键字的作用this关键字除了可以强调本类中的方法还具有以下作用。1.表示类中的属性2.可以使用关键字调用本类中的构造方法3.t
- 一. 方法重写在面向对象中,实现多态的必备条件是继承、重写和向上转型,现在我们已经学习了什么是继承。接下来我们再来学习什么是方法重写,这是我
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下此篇博客为整理文章,供大家学习。1.首先下载common
- 在Android中,线程内部或者线程之间进行信息交互时经常会使用消息,这些基础的东西如果我们熟悉其内部的原理,将会使我们容易、更好地架构系统
- 本文以实例详细分析了Java中重载与重写的区别,感兴趣的朋友可以参考一下。一、重载(Overloading):(1) 方法重载是让类以统一的
- import java.io.UnsupportedEncodingException;import java.security.Inval
- Springboot导入本地jar后 打包依赖无法加入1.本地jar包2.pom文件添加自定义jar包导入<!--自定义jar--&g
- 新手当在一个类文件中进行了一些操作之后,会造成sout快捷命令无法自动生成。比如操作了import引入其它包之后。主要是对IDEA操作的不熟
- 传统“长轮询”实现Web端即时通讯的问题WebSocket出现之前,Web端为了实现即时通讯,所用的技术都是Ajax轮询(polling)。
- java实现读取、删除文件夹下的文件package test.com;import java.io.File;import java.io.
- 实现效果:列出某个目录下的特定后缀名文件(如,列出D盘根目录下txt后缀的文件)import java.io.File;import jav
- 什么是自动装箱,拆箱先抛出定义,Java中基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的,这就是