向上类型转换VS向下类型转换

子类转换成父类时的规则:

  • 将一个父类的引用指向一个子类的对象,称为向上转型(upcasting),自动进行类型转换。此时通过父类引用调用的方法是子类覆盖或继承父类的方法,不是父类的方法。 此时通过父类引用变量无法调用子类特有的方法;
  • 如果父类要调用子类的特有方法就得将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换。
package class01;public class demo {public static void main(String[] args) {show(new Cat()); // 以 Cat 对象调用 show 方法show(new Dog()); // 以 Dog 对象调用 show 方法Animal a = new Cat(); // 向上转型a.eat(); // 调用的是 Cat 的 eatCat c = (Cat) a; // 向下转型c.work(); // 调用的是 Cat 的 work}public static void show(Animal a) {a.eat();// 类型判断if (a instanceof Cat) { // 猫做的事情Cat c = (Cat) a;c.work();} else if (a instanceof Dog) { // 狗做的事情Dog c = (Dog) a;c.work();}}
}
abstract class Animal {abstract void eat();
}
class Cat extends Animal {public void eat() {System.out.println("吃鱼");}public void work() {System.out.println("抓老鼠");}
}
class Dog extends Animal {public void eat() {System.out.println("吃骨头");}public void work() {System.out.println("看家");}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

彻底理解数据库事务

转载自 彻底理解数据库事务 事务 事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在计算机术语中,事务通常就是指数据库事务。 概念 一个数据库事务通常包含对数据库进行…

.NET 使用 RabbitMQ 图文简介

前言 最近项目要使用RabbitMQ,园里里面已经有很多优秀的文章,Rabbitmq官网也有.net实例。这里我尝试下图文并茂之形式记录下使用的过程。 安装 RabbitMQ是建立在erlang OTP平台下,因此在windows下需要下载并安装以下两个组件: 1. …

使用java交换两个数——CSDN博客

/*** * Title: test_exchange* Description: 该方法的主要作用:交换两个数* param 设定文件 * return 返回类型:void * throws*/Testpublic void test_exchange(){int num1 10;int num2 20;int exchange 0;System.out.println("原来的…

Springboot+MyBatis-plus+postgresSQL 的整合

https://blog.csdn.net/xuxiannian/article/details/99625085 SpringbootMyBatis-pluspostgresSQL 的整合 禛陌 2019-08-15 12:20:10 6752 收藏 7 分类专栏: 技术相关 文章标签: SpringbootMyBatis-pluspostgresSQL 版权 磨叨一下 MyBatis-plus 请…

String中的compareTo()方法

compareTo()方法 String类中的compareTo()方法将返回两个字符串对象的比较结果,若相等,返回0。不相等时,从两个字符串第1个字符开始比较,返回第一个不相等的字符差;另一种情况,较长字符串的前面部分恰巧是较…

使用Senparc.Weixin.WxOpen开发高可用的微信小程序

Senparc.Weixin SDK介绍 Senparc.Weixin SDk是目前.net平台上使用率最高的微信SDK,除硬件平台暂未发布以外覆盖了所有微信平台模块,自2013年免费开源起已经持续更新了4年,是GitHub上目前Star和Fork数最多的中国C#开源项目。 目前大多数模块都…

java使用循环案例——CSDN博客

/*** * Title: test_while* Description: 该方法的主要作用&#xff1a;while循环&#xff0c;输出100个我爱编程* param 设定文件 * return 返回类型&#xff1a;void * throws*/Testpublic void test_while(){int i 1;while (i<100) {System.out.println("第&…

Java中的事务——JDBC事务和JTA事务

转载自 Java中的事务——JDBC事务和JTA事务 我的博客中曾经关于事务有过很多讨论&#xff0c;之前的事务介绍基本都是数据库层面的事务&#xff0c;本文来介绍一下J2EE中和事务相关的内容&#xff0c;在阅读本文之前&#xff0c;希望读者对分布式有一定的了解。 关于事务的基础…

IDEA使用笔记(八)——自动生成 serialVersionUID 的设置

Ihttps://www.cnblogs.com/godtrue/p/7674487.html https://www.cnblogs.com/godtrue/p/7674487.html DEA使用笔记&#xff08;八&#xff09;——自动生成 serialVersionUID 的设置 这个设置比较简单&#xff0c;也有一些博文已经写到了&#xff0c;为什么我还要写哪&#…

从事件和DDD入手来构建微服务

领域驱动设计&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;是一项很伟大的技术&#xff0c;它拉近了设计与程序实际所服务的领域&#xff0c;但是通常我们会关注结构&#xff0c;从而太早地做出决策&#xff0c;这并非DDD的本意。相反&#xff0c;在领域中&…

break 和continue的用法 java——CSDN

/*** * Title: test_break_coutuint* Description: 该方法的主要作用&#xff1a;break 和continue的用法* 如果成绩等于5结束当前循环* 如果等于10的话退出* param 设定文件 * return 返回类型&#xff1a;void * throws*/Testpublic void test_break_coutuint(){for (i…

JTA 深度历险 - 原理与实现

转载自 JTA 深度历险 - 原理与实现 利用 JTA 处理事务 什么是事务处理 事务是计算机应用中不可或缺的组件模型&#xff0c;它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。关于事务最经典的示例莫过于信…

计算男孩女孩小孩各有几个 java——CSDN博客

/*** * Title: test_men_women_kids* Description: 该方法的主要作用&#xff1a;* 男人女人小孩30* 一共花50先令* 男人&#xff1a;3 女人&#xff1a;2 小孩&#xff1a;1* param 设定文件 * return 返回类型&#xff1a;void * throws*/Testpublic void test_m…

为了支持AOP的编程模式,我为.NET Core写了一个轻量级的Interception框架[开源]

ASP.NET Core具有一个以ServiceCollection和ServiceProvider为核心的依赖注入框架&#xff0c;虽然这只是一个很轻量级的框架&#xff0c;但是在大部分情况下能够满足我们的需要。不过我觉得它最缺乏的是针对AOP的支持&#xff0c;虽然这个依赖注入框架提供了扩展点使我们可以很…

装箱VS拆箱

我们一般将“基本数据类型转换成包装类”的过程叫做装箱&#xff0c;将“包装类转换成基本数据类型”的过程叫做拆箱。 装箱可以分为手动装箱和自动装箱&#xff1a; 拆箱也可以分为手动拆箱和自动拆箱&#xff1a;

事务模型与分布式事务总结思考

转载自 事务模型与分布式事务总结思考 1. 介绍 之前了解过一些分布式事务处理的思想&#xff0c;包括MVCC、TCC等。但是对具体实现的规范和约束还不够理解清晰。本文从事务模型分类来讨论常见的事务模型。事务模型的含义&#xff0c;应该指的是我们如何去使用可控制事务。 首…

Java连接PostgreSQL数据库,增删改查

https://blog.csdn.net/u013456370/article/details/79668420 通过eclipse工具&#xff0c;新建Maven项目&#xff1a; 添加&#xff1a;postgresql的jar包&#xff08;我使用的是&#xff1a;版本&#xff1a;42.2.2&#xff09; 修改pom.xml文件&#xff1a; <!-- https…

java打印九九乘法表——CSDN博客

/*** * Title: test_jiujiu* Description: 该方法的主要作用&#xff1a;九九乘法表* param 设定文件 * return 返回类型&#xff1a;void * throws*/Testpublic void test_jiujiu(){//打印九九乘法表for (int i 1; i < 10; i) {for (int j 1; j < i; j) {System…