码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • java面向对象之多态(向上转型和向下转型)(详细而精炼)


    目录

          • ☀️1.1多态基本介绍
          • ☀️1.2多态的具体体现
            • 1).🌙方法的多态:重写和重载体现多态
            • 2).🌙对象的多态
          • ☀️1.3向上转型与向下转型:
            • 1).🌙向上转型
            • 2).🌙向下转型
          • 1.4.☀️多态中的细节


    ☀️1.1多态基本介绍

    多态的介绍:多态与封装和继承称为面向对象三大特征,多态是建立在封装和继承基础之上的。

    ☀️1.2多态的具体体现

    1).🌙方法的多态:重写和重载体现多态

    重载和重写的详述与区别(点击查看)

    2).🌙对象的多态
    1. 一个对象的编译类型和运行类型可以不一致。
    2. 编译类型在定义对象时,就确定了,不能改变。
    3. 运行类型是可以变化的(由向下转型体现)。
    4. “=”的左边为编译类型,“=”的右边为运行类型。

    动物类 引用名 = new 狗类; //这里,动物类就是编译类型,狗类就是运行类型
    动物类 引用名 = new 猫类;
    //我们用父类的引用指向子类

    ☀️1.3向上转型与向下转型:

    1).🌙向上转型
    1. 本质:父类引用指向了子类的对象。
    2. 语法:父类类型 引用名 = new 子类类型();
    3. 特点:可以调用父类中所有成员(需遵守访问权限);不能调用子类中特有成员(子类的private)。
    
    • 1
    • 2
    • 3
    //向上转型,父类的引用指向了子类
    Animal animal = new Dog();
    //animal的编译类型是Animal,运行类型是Dog
    animal = new Cat;
    //animal的运行类型变成了Cat,编译类型任然是Animal
    
    • 1
    • 2
    • 3
    • 4
    • 5

    此时,我们的引用可以使用父类中所有的属性与方法(访问权限内),当我们需要调用子类中的方法时,怎么解决呢?请看向下转型

    2).🌙向下转型
        1. 语法:子类转型 引用名 = (子类类型) 父类引用;
        2. 只能强转父类的引用,不能强转父类的对象;
        3. 要求父类的引用必须指向的是当前目标类型的对象
        4. 当向下转型后,可以调用子类类型中所有对象的成员
    
    • 1
    • 2
    • 3
    • 4
    Dog d = (Dog) animal;
    d.feed();//这里我们就可以调用Dog类中方法
    
    • 1
    • 2

    此时,我们的对象还是第一次定义的animal(编译类型在定义对象时,就确定了,不能改变),经过向下转型后,又多了一个引用。例如:李华当上市长后,他被人们称为李市长,同时他还是李华。

    1.4.☀️多态中的细节

    • 多态的前提:两个对象(类)存在继承关系
    • 属性看编译类型,方法看运行类型
  • 相关阅读:
    Annealing-based Label-Transfer Learning for Open World Object Detection(论文解析)
    点赋科技:如何提高淘宝店铺的流量?
    unordered_map的4种遍历方式(C++)
    verdi dump状态机的波形时直接显示状态名
    Java智能教育平台源码基于 SpringBoot + Mybatis + Shiro + mysql + redis构建,前后端分离。
    pytorch的GPU版本(torch.cuda.is_available()返回False)
    Go fsnotify简介
    三菱FX3U小项目—机床定时器延时启动
    STM32CUBEIDE(10)----ADC在DMA模式下扫描多个通道
    无涯教程-JavaScript - DEC2BIN函数
  • 原文地址:https://blog.csdn.net/pipiblack/article/details/124973978
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号