向上转移和向下转型

向上转型

实际就是创建一个子类对象,将其当成父类对象来使用。格式:父类类型 对象名=new 子类类型();eg:Animal animal=new Cat();animal是父类类型,但可以引用一个子类对象,因为是从小范围向大范围的装换

public class Main {public static void main(String[] args) {dog dog=new dog("az",1);dog.bark();dog.eat();System.out.println("=======");animal animal=new dog("ss",2);
//      animal.bark();调用不会成功animal.eat();}
}
class animal{public String name;public int age;public animal(String name,int age){this.age=age;this.name =name;}public void eat(){System.out.println(this.name+"正在吃饭...");}
}
class dog extends animal{public dog(String name,int age){super(name,age);}@Overridepublic void eat() {System.out.println(this.name+"正在吃饭.");}public void bark(){System.out.println(this.name+"叫");}
}

animal.bark()调用不成功是因为bark()只有子类有,父类没有

向上转型的优点:让代码实现更简单灵活;缺点:不能调用到子类特有的方法

向下转型

将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用到子类特有的方法,此时:将父类引用再还原为子类对象即可,即向下转型

将上面的代码main改成如下:

public class Main {public static void main(String[] args) {dog dog=new dog("元宝",1);animal animal=dog;//向下转型dog.eat();//animal.bark();编译不成功,编译时编译器将animal当成animal对象处理,而animal类中没有bark方法//向上转型dog=(dog) animal;dog.bark();}
}

instanceof关键字

如果该表达式为true则可以安全转换

多态体现

 

public class Main {public static void main(String[] args) {rect rect=new rect();cycle cycle=new cycle();drawMap(rect);drawMap(cycle);}public static void drawMap(shape shape){shape.draw();}
}
class shape{//属性public void draw(){System.out.println("画图形");}
}
class rect extends shape{@Overridepublic void draw() {System.out.println("※");}
}
class cycle extends shape{@Overridepublic void draw() {System.out.println("圆");}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

英飞凌最新AURIX™TC4x芯片介绍

概述: 英飞凌推出最新的AURIX™TC4x系列,突破了电动汽车、ADAS、汽车e/e架构和边缘应用人工智能(AI)的界限。这一代面向未来的微控制器将有助于克服安全可靠的处理性能和效率方面的限制。客户将可缩短快速上市时间并降低整体系统成本。为何它被称为汽车市场新出现的主要颠覆…

关于Java数据结构中集合的一个小知识

在我们以后刷题的过程,我们会遇到一些奇怪的集合数据类型。 如下图 这里,我们以顺序表的集合类为例,我们看到上图函数的返回值类型有点奇怪,其实并不奇怪,也就是穿过去的参数类型是一个顺序表的集合类型,也…

stm32单片机个人学习笔记4(GPIO输入)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

【资料分析】刷题日记2

第一套 √ 2013-2016一共有13,14,15,16四年,亦即16 - 13 1 4年 √ 是多少倍 ③vs④:都是只给出了年均增速,③求的是其中一年的,无法确定;④求的是这个时段总共的,可…

JavaScript 网页设计案例:互动留言板

目录 案例:互动留言板 1. 初始HTML结构 2. CSS 样式 3. JavaScript 功能实现 4. JavaScript 实现细节解析 4.1 DOMContentLoaded 事件 4.2 获取 DOM 元素 4.3 动态创建和添加留言 4.4 删除和编辑功能 5. 留言板功能扩展与优化 5.1 键盘快捷键 5.2 本地存…

互联网前端之 CSS 常见属性与三层结构

目录 现在互联网前端三层 CSS 常见属性 关注作者微信公众号,开启探索更多 CSS 知识的精彩之旅。在这里,你将收获丰富的CSS专业内容,深入了解这一网页开发语言的奥秘,不断拓展你的知识边界,提升技能水平。快来关注吧&…

窗户检测系统源码分享

窗户检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

一文读懂DaemonSet以及实践攻略

一文读懂DaemonSet以及实践攻略 目录 1 概念 1.1 什么是DaemonSet1.2 DaemonSet 的工作机制1.3 适用场景1.4 DaemonSet 与 Deployment 的区别1.5 DaemonSet的通信模式 2 实践案例:部署和更新 Fluentd 日志收集器 2.1 部署Fluentd DaemonSet 2.1.1 定义Fluentd Dae…

2012年408考研真题-数据结构

8.【2012统考真题】求整数n(n≥0)的阶乘的算法如下&#xff0c;其时间复杂度是(&#xff09;。 int fact(int n){ if(n<1) return 1; return n*fact (n-1); } A. O(log2n) B. O(n) C. O(nlog2n) D. O(n^2) 解析&#xff1a; 观察代码&#xff0c;我们不…

【代码】使用c#实现串口通信的基础模板

一、分享代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;using System.IO.Ports; using…

SAP中BW与OFFICE 64位兼容性问题解决实例

近期遇到一个BW与OFFICE的兼容性问题。新电脑(WIN11)安装使用SAP正常&#xff0c;安装OFFICE 2016 64位版时&#xff0c;BEx Aanlysis无法打开(没有提示&#xff0c;下位框不出现)。安装OFFICE 2016 32位版时&#xff0c;BW的Aanlysis可正常使用。 这个BEx Aanlysis我理解是SA…

链表--(1)链表的概念

前言引入 之前我们学习了数组这一概念,使用数组可以在编程时增加程序的灵活性。但在c语言中不允许定义动态数组的类型也不能随意调整数组的大小,往往会导致内存空间的浪费。由此我们推出链表。链表是动态进行内存分配的一种结构,它可以随时为其结点分配需要的存储空间也方便…

爬虫框架之Scrapy介绍——高效方便

# 近年来大数据分析、数据可视化和python等课程逐渐在大学各个学科中铺展开来&#xff0c;这样一来爬虫在平时小作业和期中、期末报告中出现的频率也逐渐变高。那么单一的使用requests库&#xff0c;自己从头到尾的的设计&#xff0c;考虑数据提取、线程管理和数据存储等方方面…

干货:分享6款ai论文写作助手,一键生成原创论文(步骤+工具)

写一篇论文是一个复杂的过程&#xff0c;涉及多个步骤&#xff0c;包括选题、研究、撰写、编辑和校对。AI可以在其中的一些步骤中提供帮助&#xff0c;但最终的论文还是需要人类作者的深入思考和创造性输入。以下是六款值得推荐的AI论文写作助手&#xff0c;其中特别推荐千笔-A…

前端开发之原型模式

介绍 原型模式本质就是借用一个已有的实例做原型&#xff0c;在这原型基础上快速复制出一个和原型一样的一个对象。 class CloneDemo {name clone democlone(): CloneDemo {return new CloneDemo()} } 原型原型链 函数&#xff08;class&#xff09;都有显示原型 prototyp…

Redis-01 入门和十大数据类型

Redis支持两种持久化方式&#xff1a;RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上&#xff0c;可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照&#xff0c;可以通过恢复RDB文件来恢复数据。 2.AOF持久化…

深蓝学院-- 量产自动驾驶中的规划控制算法 小鹏

文章目录 0. 前言1.发展现状2.行车功能中难点问题及解决思路问题1&#xff1a;车道居中辅助&#xff0c;画龙&#xff0c;蛇行问题。问题2&#xff1a;外界环境扰动以及传感器信息缺失下的横向控制难点问题3&#xff1a;大坡度平稳停车 3. 泊车功能中难点问题及解决思路问题1&a…

尚品汇-秒杀下单实现-页面轮询查询订单状态(五十三)

目录&#xff1a; &#xff08;1&#xff09;整合秒杀业务 &#xff08;2&#xff09;秒杀下单 &#xff08;3&#xff09;秒杀下单监听 &#xff08;4&#xff09;页面轮询接口 &#xff08;1&#xff09;整合秒杀业务 秒杀的主要目的就是获取一个下单资格&#xff0c;拥…

【iOS】——JSONModel源码

JSONModel用法 基本用法 将传入的字典转换成模型&#xff1a; 首先定义模型类&#xff1a; interface Person : JSONModel property (nonatomic, copy) NSString *name; property (nonatomic, copy) NSString *sex; property (nonatomic, assign) NSInteger age; end接…

索引的介绍

目录 1.索引的介绍 1.1 什么是索引 1.2 为什么要使用索引 2.索引应该选择哪种数据结构 3.MYSQL中的页 3.1为什么要使用页 3.2页文件头和页文件尾 3.3 页主体 3.3页目录 3.4数据页头 4.B在MYSQL索引中的应用 4.1计算三层树高的B树可以存放多少条记录 5.索引分类 5.1 主…