博客
关于我
多态中变量和方法的一些思考
阅读量:494 次
发布时间:2019-03-07

本文共 774 字,大约阅读时间需要 2 分钟。

多态在Java中允许同一个变量引用不同类的对象,但变量的类型是固定的,无法重写。方法则可以根据运行时的类来执行不同的逻辑,这是多态的关键点。以下是详细的解释:

  • 变量与多态

    • 变量的类型在声明时确定,无法改变。例如,父类和子类都有相同的变量arm_length,但当创建一个子类实例并赋值给父类变量时,变量的值始终指向父类的值。这是因为变量是基于其声明的类型来获取值的,而不是运行时的对象类型。
    • 因此,父类引用调用的是父类的变量值,而不是子类的。
  • 方法与多态

    • 方法可以重写,因为它们是基于运行时对象的类型来执行的。当子类覆盖了父类的方法时,父类引用会调用子类的方法,这样可以实现不同的行为。
    • 在代码中,father.buyTobacco()调用的是子类重写的方法,因为运行时的对象是Son实例。
  • 多态的意义

    • 变量和方法的区别体现了多态的两个方面:变量是属性,方法是行为。变量的多态性(即继承)不涉及重写,而方法的多态性涉及行为的不同实现。
    • 这种设计使得代码更灵活,符合面向接口的设计原则,允许同一接口有多个实现。
  • 示例分析

    • 父类Father的arm_length是60,子类Son的arm_length是65。当创建Father father = new Son();时,father.arm_length输出60,因为变量是根据父类类型来获取值。
    • father.buyTobacco()输出“儿子爱抽黄鹤楼”,因为方法是根据运行时的对象类型来调用的。
  • 总结

    • 变量的类型决定了其值,无法通过重写来改变。
    • 方法的重写允许不同的对象在相同的接口下执行不同的行为。
    • 这种设计保持了代码的清晰性和可维护性,符合多态的原则。
  • 通过以上分析,可以看出变量和方法在多态中的不同处理方式,变量基于声明类型,而方法基于运行时对象类型,这样实现了灵活的行为多态。

    转载地址:http://bxwcz.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 使用OpenCV轮廓检测提取图像前景
    查看>>
    OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
    查看>>
    OpenCV与AI深度学习 | 使用PyTorch进行小样本学习的图像分类
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>
    OpenCV与AI深度学习 | 使用单相机对已知物体进行3D位置估计
    查看>>
    OpenCV与AI深度学习 | 初学者指南 -- 什么是迁移学习?
    查看>>
    OpenCV与AI深度学习 | 十分钟掌握Pytorch搭建神经网络的流程
    查看>>
    OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV实现模糊检测 / 自动对焦
    查看>>
    OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
    查看>>
    OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8实现高级目标检测和区域计数
    查看>>
    VS2003 Front Page Server Extension
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>