码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【第一阶段:java基础】第7章:面向对象编程中级-2(P307-P318):多态


    本系列博客是韩顺平老师java基础课的课程笔记,B站:课程链接,吐血推荐的一套全网最细java教程,获益匪浅!

    韩顺平P307-P318

    • 1. 基本介绍
    • 2. 具体表现
    • 3. 细节
      • 多态的向上转型
      • 多态的向下转型
      • 其他
    • 4. 动态绑定机制 💗(P315)
    • 5. 应用
      • 多态数组
      • 多态参数

    1. 基本介绍

    多态指的就是方法或者对象具有多种状态,是面向对象的第三大特征,多态是建立在封装和继承基础之上的

    2. 具体表现

    • 方法的多态:方法的重载和重写体现了方法的多种状态
    • 对象的多态
        1. 一个对象的编译类型和运行类型可以不一致:可以将父类的引用指向子类的对象 Animal animal=new Dog() animal的编译类型是Animal , 运行类型是Dog
        1. 编译类型在定义对象时,就确定了,不能改
        1. 运行类型是可以变化的(多态): animal=new Cat() 此时 animal的运行类型变成了cat,编译类型仍然是animal
        1. 编译类型看定义时 = 号的左边,运行类型看= 的右边
          在这里插入图片描述

    3. 细节

    • 多态的前提是两个对象存在继承关系

    多态的向上转型

    • 本质:父类的引用指向了子类的对象
    • 语法:父类类型 引用名= new 子类类型()
    • 特点:编译类型看左边,运行类型看右边。
    • 向上转型的调用方法如下:
        1. 可以调用父类中的所有成员(需遵守访问权限)
        1. 不能调用子类的特有成员,因为在编译阶段,能调用哪些成员是由编译类型决定的。
        1. 最终运行效果看子类的具体实现,先从子类(运行类型)开始找,子类没有就找父类。

    多态的向下转型

    • 语法:子类类型 引用名=(子类类型)父类引用
    • 只能强转父类的引用,不能强转父类的对象
    • 要求父类的引用必须原本就是指向,强转后的子类对象
    • 可以调用子类类型中的所有成员

    其他

    • 属性没有重写一说,属性的值看编译类型,所以说:方法调用看运行类型,属性调用看编译类型!
    • instanceOf 比较操作符,用于判断对象的运行 类型是否为XX类型或者是XX类型的子类型

    4. 动态绑定机制 💗(P315)

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

    5. 应用

    多态数组

    • 数组的定义类型为父类类型,里面保存的实际元素类型为子类类型
      在这里插入图片描述

    多态参数

    • 方法定义的形参类型为父类类型,实参类型允许为子类类型
      在这里插入图片描述

    多态的规则真的挺复杂的…单独拿出一篇博客记录吧~

  • 相关阅读:
    华为手机怎样设置每月8号18号28号提醒的备忘录
    Leetcode 1696. Jump Game VI (DP + 单调队列)
    微信小程序获取用户头像昵称组件封装(最新版)
    【Linux网络编程】Socket-TCP实例
    awk根据某个字段过滤文件航
    一篇文章教会你Linux中的“启动类故障修复”和root密码修改
    我的Windows10下的WSL的使用经历
    MATLAB环境下基于频率滑动广义互相关的信号时延估计方法
    Splunk Field Caculated 计算字段
    二十九、Java 数据结构
  • 原文地址:https://blog.csdn.net/qq_39328436/article/details/127746408
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号