多态:向上转型和向下转型

1)本质:父类的引用指向了子类的对象

2)语法:父类类型 引用名 = new 子类类型();

3)特点:编译类型看左边,运行类型看右边。

  • 可以调用父类中的所有成员(需遵守访问权限),但不能调用子类中特有成员。因为在编译阶段,能调用哪些成员,是由编译类型来决定的
  • 最终运行效果看子类(运行类型)的具体实现,即调用方法时,按照从子类(运行类型)开始查找方法然后调用,如果子类没有该方法,再调用父类的方法

1)语法:子类类型 引用名 = (子类类型)父类引用;

2)只能强转父类的引用,不能强转父类的对象

3)要求父类的引用必须指向的是当前目标类型的对象,即把只能指向子类对象的父类引用,转成指向子类对象的子类引用

4)当向下转型后,可以调用子类类型中所有的成员和父类的方法(需遵守访问权限)

  • 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
  • 当调用对象属性时,没有动态绑定机制,即属性在那里声明,就在那里调用

(1)一个对象的编译类型和运行类型可以不一致
(2)编译类型在定义对象时,就确定了,不能改变
(3)运行类型是可以变化的.

(4)编译类型看定义时=号的左边,运行类型看=号的右边

Original: https://www.cnblogs.com/little-sheep9/p/16112526.html
Author: 小小羊儿
Title: 多态:向上转型和向下转型

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/601558/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 23种设计模式之命令模式

    文章目录 概述 命令模式的优缺点 命令模式的应用场景 命令模式的结构和实现 * 模式的结构 模式的实现 总结 ; 概述 命令模式(Command Pattern)是一种数据驱动的设…

    数据库 2023年6月6日
    0131
  • 详解在Linux中安装配置MongoDB

    最近在整理自己私人服务器上的各种阿猫阿狗,正好就顺手详细记录一下清理之后重装的步骤,今天先写点数据库的内容,关于在 Linux中安装配置 MongoDB 说实话为什么会装 Mong…

    数据库 2023年6月11日
    0164
  • Nginx 代理超时

    Nginx代理超时 内部测试并未出现问题 但是再客户那边出现了 BUG System.InvalidOperationException: Response Content-Len…

    数据库 2023年6月11日
    072
  • 一条SQL查询语句是如何执行的?

    MySQL是典型的 C/S架构(客户端/服务器架构),客户端进程向服务端进程发送一段文本(MySQL指令),服务器进程进行语句处理然后返…

    数据库 2023年5月24日
    084
  • 深入浅出分析 HashMap

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、摘要 在集合系列的第一章,咱们了解到,Map的实现类有HashMap、LinkedHashMap、TreeMap、Ident…

    数据库 2023年6月14日
    074
  • linux常用命令(持续更新中…)

    查看所有开机启动服务:systemctl list-unit-files # 按Enter翻页 查看所有开机启动服务:systemctl list-unit-files | gre…

    数据库 2023年6月14日
    080
  • Celery异步任务

    (1)安装celery pip install celery==4.2.1 (2)celery使用 在项目适当位置创建celery_tasks目录用于保存celery异步任务。 在…

    数据库 2023年6月14日
    079
  • 【转】SpringBoot ElasticSearch 各种查询汇总

    一:文档对象如下 二:非聚合复杂查询(这儿展示了非聚合复杂查询的常用流程) 三:精确查询(必须完全匹配上) 单个匹配termQuery 多个匹配 四:模糊查询(只要包含即可) 五:…

    数据库 2023年6月6日
    072
  • MYSQL的Java操作器——JDBC

    在学习了Mysql之后,我们就要把Mysql和我们之前所学习的Java所结合起来 而JDBC就是这样一种工具:帮助我们使用Java语言来操作Mysql数据库 JDBC简介 首先我们…

    数据库 2023年6月14日
    082
  • MySQL数据库CRUD

    INSERT语句 INSERT INTO 表名 (column1,column2,column3,…)VALUES (value1,value2,value3,&#82…

    数据库 2023年6月16日
    088
  • leetcode 572. Subtree of Another Tree 另一棵树的子树 (简单)

    一、题目大意 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 fa…

    数据库 2023年6月16日
    0111
  • Linux–>开关机+用户管理指令

    shutdown关机 语法: shutdown -h 关机时间 now 立刻1 1分种后 s…

    数据库 2023年6月14日
    088
  • Linux快速安装流量监控工具(实用版)

    前言: Linux流量监控工具,在此我推荐两种分别为: 1、nload(推荐)因为个人看着舒服点😂 2、iftop 以上两种任选其一即可,在此对两种都有介绍和安装教程,我写了,大家…

    数据库 2023年6月16日
    087
  • Linux常用指令

    Linux常用指令 到达底部 运行级别有以下几种 0级:关机 1级:单用户 (找回密码) 2级: 多用户没有网络服务 3级: 多用户有网络服务 4级: 系统未使用保留给用户 5级:…

    数据库 2023年6月16日
    089
  • 记一次部署系列:prometheus配置通过alertmanager进行邮件告警

    1、修改配置 首先在prometheus中配置alertmanager地址,并配置告警规则文件,如下,然后重启prometheus。 规则文件如下:rules.yml &#8211…

    数据库 2023年6月9日
    077
  • JSON

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。并有效地提升网络传输效率。 一. 什么是 …

    数据库 2023年6月11日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球