学Java第三十一天----------多态调用成员的特点

embedded/2025/2/27 7:34:59/

一、多态调用成员的特点

成员变量调用:编译看左边,运行也看左边,即获取的是父类的成员变量值

成员方法调用:编译看左边,运行看右边,即运行的是子类的成员方法

二、多态的优势

示例1:上一节的代码

示例2:append后可以有很多类型的参数

示例3:没有写泛型的数组可以add任何类型

三、多态的劣势

因为:

成员变量调用:编译看左边,运行也看左边,即获取的是父类的成员变量值

成员方法调用:编译看左边,运行看右边,即运行的是子类的成员方法

不能使用子类的特有功能,该怎么办呢???

--------->>>进行强制转换,

如何强转???

第一种:Animal  a=new Dog();

              Dog d=(Dog)a;

第二种(常用):使用instanceof关键字

例如:

强转有时会出错,原因:

              Animal  a=new Dog();

              Cat c=(Cat)a;   ----------->>>这样会出错ClassCastException,因为必须要转成Dog类型


http://www.ppmy.cn/embedded/167483.html

相关文章

DeepSeek 提示词:定义、作用、分类与设计原则

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

【EB-06】SystemCreator dbc转arxml

SystemCreator dbc转arxml 1. SystemCreator 意义2. SystemCreator使用方法2.1 实现步骤2.2 参考官方文档方法1. SystemCreator 意义 EB Tresos 对dbc直接导入的支持不是很完善,dbc也不是AUTOSAR标准的数据库文件,EB建议所有通信矩阵通过ARXML交互比较合理(AUTOSAR定义的)…

初始化一个Vue项目

1、安装vue npm i -g vue2、安装vue-cli npm install -g vue-cli3、安装webpack npm install -g webpack 4、安装完上述组件后,检查是否安装成功 node -v npm -v vue --version4、初始化自己的vue项目 vue init webpack bpmn-vue执行命令:npm insta…

JAVA-如何理解Mysql的索引

一、索引的概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用(指针/地址)。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。 二、索引是什么,用来干嘛 数据库中的表、数据、索引之间的…

Opencv [去除水印]

一、原图 二、代码 #include <iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv;/*** brief 程序的入口函数* * 此函数是程序执行的起点&#xff0c;打印一条问候语到标准输出&#xff0c;并返回一个退出状态码。* * return int …

Qt layout

文章目录 Qt layout**关键机制****验证示例****常见误区****最佳实践****总结**关键点总结&#xff1a;示例代码说明&#xff1a;结论&#xff1a; Qt layout 在 Qt 中&#xff0c;当调用 widget->setLayout(layout) 时&#xff0c;layout 的父对象会被自动设置为该 widget…

AI人工智能机器学习之监督学习和集成学习

1、概要 本篇学习AI人工智能机器监督学习框架下的集成学习&#xff0c;以鸢尾花iris数据集、随机森林模型和梯度提升为示例&#xff0c;从代码层面测试和讲述监督学习和集成学习能。 2、监督学习和集成学习 - 简介 监督学习和集成学习是机器学习领域中的两个重要概念。 监督…

ES6新增语法

一、定义变量 1.1 新增变量关键字 let 变量 const 常量 1.2 let/const 与var 的区别&#xff1f; 1.2.1 预解析 var会进行与解析 let/const没有与解析&#xff0c;必须先声明后使用 1.2.2重复变量名 var定义的变量可以崇明 let/const 不允许定义重名变量 1.2.3 块级作…