JAVA.4.多态

目录

1.表现形式

2.前提条件

1.有继承关系

2.有父类引用指向子类对象

3.有方法的重写

3.注意事项

代码演示

代码结构


1.表现形式

父类类型   对象名字   = new   子类对象();

2.前提条件

1.有继承关系

2.有父类引用指向子类对象

3.有方法的重写

3.注意事项

1.调用成员方法,编译看左边,看左边有没有这个方法,不然就编译失败报错

运行看右边,调用的是右边的对象的方法,即子类的方法

2.调用成员变量,编译运行都看左边

animal   a  =  new  dog();

a.name     调用成员变量,看左边,左边有这个变量,编译成功,运行也看左边,左边是animal  所以  name=animal

a.show     调用成员方法,看左边,左边有这个方法,编译成功,运行看右边,子类对父类的show方法进行重写,所以调用的是子类的show方法,所以打印的是show dog

代码演示

代码结构

package animalpakage;class animal {String name = "animal";public void show() {System.out.println(name + "animal show");}
}class dog extends animal {String name = "dog";@Overridepublic void show() {System.out.println(name + "dog show");}
}class cat extends animal {String name = "cat";@Overridepublic void show() {System.out.println(name + "cat show");}}
package animalpakage;public class animalTest {public static void main(String[] args) {animal a=new dog();System.out.println(a.name);a.show();}
}

给dog加上特有的方法,编译看左边,父类没有dogthing这个方法,所以报错了

class dog extends animal {String name = "dog";@Overridepublic void show() {System.out.println(name + "dog show");}public void dogthing(){System.out.println(name + "dog eat bone");}
}

那么如何使用这个子类特有的方法呢?

需要转类型,但需要先判断它是不是dog这个类型

package animalpakage;public class animalTest {public static void main(String[] args) {animal a=new dog();System.out.println(a.name);a.show();if(a instanceof dog d){d.dogthing();}}
}

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

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

相关文章

ozon要保证金吗,俄罗斯ozon平台要不要保证金

在跨境电商的广阔舞台上,俄罗斯Ozon平台作为本土领先的B2C电商平台,吸引了众多国内外卖家的目光。然而,对于初入该平台的新手卖家而言,一个常见且关键的问题便是:“Ozon要保证金吗?俄罗斯ozon平台要不要保证…

CTF-NSSCTF题单[GKCTF2020]

[GKCTF 2020]CheckIN 这道题目考察:php7-gc-bypass漏洞 打开这道题目,开始以为考察反序列化,但实际并不是,这里直接用$_REQUEST传入了参数便可以利用了。这里出现了一个eval()函数,猜测考察命…

centos系统mysql主从复制(一主一从)

文章目录 mysql80主从复制(一主一从)一、环境二、服务器master1操作1.开启二进制日志2. 创建复制用户3. 服务器 slave1操作4. 在主数据库中添加数据 mysql80主从复制(一主一从) 一、环境 准备两台服务器,都进行以下操…

js有关深度优先遍历和广度优先遍历

1.Ai智能回答 深度优先遍历和广度优先遍历是图论中两种基本的遍历算法,‌它们分别以不同的方式遍历图中的所有顶点。‌ 深度优先遍历(‌DFS)‌是一种用于遍历或搜索树或图的算法。‌这个算法会尽可能深地搜索图的分支。‌在图中,‌…

Elasticsearch-RestAPI --学习笔记

RestAPI ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。 官方文档地址: Elasticsearch Clients | Elastic 以下关于RestAPI 的说明都是基于老版本客户端 初始化RestClient 1&…

学习华为IPD流程黑话2.0

目录 1、内容简介 2、概念六:管道管理 3、概念七:业务计划 4、概念八:IPMT 的投资活动 5、概念九:BETA、ESS、ESP 作者简介 1、内容简介 学习任何新事物都是从概念开始的。 以我个人最近遇到的一个事为例: 前…

探索国内商业地产之巅:卓越项目的标准是什么?

在我心目中,现阶段国内最好的商业地产项目,如果要从多个维度综合考虑的话,我会提名一些像“万象城”这样的城市综合体作为典范,特别是那些位于一线城市或新一线城市核心地段的万象城项目。 作为一个多年的地产从业者,…

nodejs编译报错 集合

目录 一、使用命令编译typescript时报错,报错文件tsconfig.json 二、npm start运行后报错,could not find module 一、使用命令编译typescript时报错,报错文件tsconfig.json npx tsc 报错: Specified include paths were [&…

秋招突击——7/24——知识补充——JVM类加载机制

文章目录 引言类加载机制知识点复习类的生命周期1、加载2、连接——验证3、连接——准备4、连接——解析5、初始化 类加载器和类加载机制类加载器类加载机制——双亲委派模型 面试题整理1、类加载是什么2、类加载的过程是什么3、有哪些类加载器?4、双亲委派模型是什…

Redis一致性与分布式锁

Redis一致性 何为redis一致性 即在项目中,redis缓存中的数据要与数据库当中的数据保持一致。 那么这里,就会有小伙伴要问了,redis缓存中的数据不就是从数据库当中查询出来的吗?怎么会不一致呢? 笔者在这里解答一下…

Unite 上海 强势回归

​​​ 他回归了 Unite 大会是一年一度的 Unity 全球开发者盛会。今年,Unite 将于 7 月盛夏点亮上海外滩。此次盛会,我们将以“团结”为核心,凝聚全球 3000 多位 Unity 社区精英的力量,共同开启 Unity 技术的新纪元。 在这里&am…

样式迁移及代码

一、定义 1、使用卷积神经网络,自动将一个图像中的风格应用在另一图像之上,即风格迁移;两张输入图像:一张是内容图像,另一张是风格图像。 2、训练一些样本使得样本在一些cnn的特征上跟样式图片很相近,在一…

字典集合案例

1.统计字符 统计字符串中每个字符出现的次数 s l like summer very much #去掉空格 s s.replace(" ","") d dict() for i in s:if i in d:d[i] 1else:d[i] 1 for i in d:print(i,d[i]) 2.求不重复的随机数 #导入随机数 import random a int(input(&q…

被问到MQ消息已丢失,该如何处理?

在分布式系统中,消息中间件(如 RabbitMQ、RocketMQ、Kafka、Pulsar 等)扮演着关键角色,用于解耦生产者和消费者,并确保数据传输的可靠性和顺序性。尽管我们通常会采取多种措施来防止消息丢失,如消息持久化、…

【Vue实战教程】之 Vue Router 路由详解

Vue Router路由 1 路由基础 1.1 什么是路由 用Vue.js创建的项目是单页面应用,如果想要在项目中模拟出来类似于页面跳转的效果,就要使用路由。其实,我们不能只从字面的意思来理解路由,从字面上来看,很容易把路由联想…

HTML(五)——HTML区块,布局

HTML区块 HTML可以通过 <div> 和 <span>将元素组合起来&#xff0c;可以来布局&#xff0c;就是盒子&#xff0c;div是块级盒子&#xff0c;里面 可以放任何东西&#xff0c;span里面装的是文本 HTML 区块元素 大多数 HTML 元素被定义为块级元素或内联元素。 实…

Java 面试 | Redis

目录 1. 在项目中缓存是如何使用的&#xff1f;2. 为啥在项目中要用缓存&#xff1f;3. 缓存如果使用不当会造成什么后果&#xff1f;4. redis 和 memcached 有什么区别&#xff1f;5. redis 的线程模型是什么&#xff1f;6. 为什么单线程的 redis 比多线程的 memcached 效率要…

dns逆向解析,主从服务,多域名访问(穿插ntp服务器)

复习 域名解析&#xff1a; 正向解析&#xff1a;将域名解析为ip 反向解析&#xff1a;将ip解析为域名 逆向解析 关闭防火墙和selinux&#xff0c;配置静态ip [rootdns ~]# vim /etc/named.rfc1912.zones [rootdns ~]# vim /etc/named.conf [rootdns ~]# cd /var/named/ [rootd…

前端:Vue学习-4

前端&#xff1a;Vue学习-4 1. 组件缓存 keep-alive2. 状态管理工具 - Vuex2.1 vuex 提供数据&使用数据 - mapState2.2 mutations 修改数据 - mapMutations2.3 actions - 异步操作 - mapActions2.4 getters - 计算属性 - mapGetters 3. Vuex 模块 modules - state,mutation…

day07:用户下单、订单支付

文章目录 地址薄相关相关代码需求分析和设计代码书写 用户下单需求分析和设计代码开发 订单支付微信支付介绍微信支付准备工作如何保证数据安全&#xff1f;如何调用到商户系统 地址薄相关相关代码 需求分析和设计 产品原型接口设计数据库设计 代码书写 地址薄相关代码都是单…