多态总结

什么是多态?为什么要使用多态?什么时候用多态?多态是如何实现的?使用多态有什么好处?   在学习《大话设计模式》的时候经常会遇到多态,但什么是多态?为什么要使用多态?什么时候用多塔?多态是如何实现的?使用多态有什么好处?我们将根据以上五个问题展开激烈的讨论。 什么是多态?   多态,顾名思义指“多种形态”。多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。 例:猪、狗、猫都属于动物类,我们将动物类作为父类,猪“哼哼叫”,狗“汪汪叫”,猫“喵喵叫”,猪、狗、猫三... 阅读详情

多态实质:A系统向B系统请求名为甲的服务,甲这种服务在B里有多种实现方式,具体细节被封装在B系统中,对于A系统来说是不可见的。
以下规则适用于父类 的引用变量引用子类实例变量

//父类
public class base{
    String BaseStr="base";
    static String staticBaseStr="staticBase";
    public void method1(){
        System.out.println("Base's method1")
    }
    public static void method2(){
        System.out.println("Base's static method2")
    }
}
//子类
public class Sub extends base{
    String SubStr="sub";
    static String staticSubStr="staticSub";
    public void method1(){
        System.out.println("Sub's method1")
    }
    public static void method2(){
        System.out.println("Sub's static method2")
    }
}
public class test{
    public void main(arg s){
        Base base =new Sub();//父类 的引用变量引用子类实例变量

        base.BaseStr="new base";//合法
        base.SubStr="new sub";//编译出错 不符合规则1,规则3第三点  Base中没SubStr;
        ((Sub)base).SubStr="new sub";//合法,向下转型为Sub类型

        base.staticBaseStr="123";//合法
        base.staticSubStr="123";//编译出错 不符合规则1,规则3第三点  Base中没staticSubStr;
        ((Sub)base).staticSubStr="123"//合法,理由同上

        base.method1();//根据规则2 打印Sub's method1 
        base.method2();//根据规则3第二小点 打印Base's static method2
    }
}

1、对于一个引用类型的变量,java编译器按照它声明的类型处理。
2、对于一个引用类型的变量运行时java虚拟机按照实际引用的对象来处理
3、在运行时环境中,通过引用变量来访问所引用对象的方法和属性时java虚拟机采用一下绑定机制:

//·实例方法与所引用的实际对象的方法绑定,这种属于动态绑定;
//·静态方法与所引用变量的声明类型(也就是声明变量的类)的方法绑定,静态绑定
//·成员变量(静态变量和成员变量)与所引用变量的声明类型(也就是声明变量的类)的成员变量绑定
//·换句话说引用变量是声明类型(也就是类)那么该引用变量所访问的静态方法,成员变量均是该类的静态方法和该类的成员变量,与第一点相呼应
HackRF实战:用Portapack扩展板玩转GPS信号模拟(附固件刷写教程) 本文详细介绍了如何使用HackRF与Portapack扩展板进行GPS信号模拟,包括固件刷写、信号生成与发射配置等实战操作。通过专业工具和优化技巧,读者可以掌握软件无线电的高级应用,解决手机定位难题,同时强调安全合规使用的重要性。 阅读详情

相关推荐

一个三极管和稳压管构成的简易稳压电源

一、对电压精度要求不高的场所可以使用本文中所述的简易稳压电源(电流变化引起 的基极-发射极的压降 变化 对输出电压来说可以容忍)二、根据负载实际需求选择三极管,不同的三极管集电极电流不同,电流放大倍数不同(1、尽量选择负载电流(iC 或 iE)上限时,hFE仍然比较理想的三极管,2、一般三极管对基极电流没有限制,可以适当调整基极电流以获得所需输出电流)

五花带点肉 1万+

关于多态的学习总结

多态的最大特点是:“一个操作,不同结果”。而构成它的必要条件则是,赋值兼容规则和函数的虚特性;     赋值兼容规则指的是,在公有派生的前提下(C++中由基类到子类叫“派生”,反之,叫继承),基类指针可以指向子类的对象,具体点说,基类指针指向的是派生类的基类的部分(子类对象在创建之前,会先创建基类对象,所以,一个子类对象包含基类对象的部分和派生类的部分)。     那么问题来了,既然基类指针指

993

MATLAB PDE工具箱电磁场仿真平行电容板及电偶极子详解

首先打开matlab,在命令行输入pdetool打开PDE工具箱 工具箱的功能我就不赘述了,大概就是以有限元的数值计算方法,计算二阶偏微分方程,因此可以解决电磁场、热力学等问题。 首先点击左上角按钮,画三个矩形 画完一个后可以双击矩形编辑,参数如下: 其中R1表示上极板,R2表示下极板,R3表示整个空间区域。 在上方Set formula为R3-R2-R1,表示求解区域是整个空间区域减去两个极板。下拉框选择Electrostatics表示求解的是静电场问题。 接下来点击上方菜单栏中的这个按钮,表

weixin_42845306的博客 1万+

关于多态的总结(精简明了)

qq_38042187的博客 279

11-4 AEB 算法原理及系统组成

本专题旨在探讨如何利用仿真软件开发自动紧急制动系统AEB,主要通过整理开发流程,实现从需求到验证的全流程掌握,为后续开发提供支持;同时,研究了如何在汽车自动驾驶仿真工具中开发自己的算法,并解决了从ISO、E-CNAP、GB/T以及交通法规等提炼出功能需求的问题,以快速实现原型模型的开发。本专题重点讲解了AEB的工作原理、系统/软件架构和需求、算法模型及实现、CCRs/CCRb/CCRm建模与仿真、VRU-AEB-B/P/M建模与仿真,同时还提供了测试用例,期待将AEB算法成功地产品化。

AIgraphX 8552

Keil MDK下载报错:Flash Download failed终极解决指南(附固件恢复步骤)

本文针对Keil MDK开发中常见的“Error: Flash Download failed”报错,提供了从基础连接到深度诊断的系统性解决指南。文章详细解析了错误成因,并重点介绍了当常规SWD调试失效时,如何通过Bootloader模式和ISP模式(特别是UART Bootloader)恢复“变砖”芯片的完整实战步骤,帮助开发者彻底解决固件下载难题。

weixin_29196613的博客 816

什么是多态

目录 什么是多态 多态的特点 多态存在的三个必要条件 多态时成员变量、静态方法和非静态方法的特点 什么是多态 多态就是一个对象变量可以指向多种实际类型的现象,同一个事件发生在不同的对象上会产生不同的结果。 多态的特点 好处:消除类型之间的耦合关系 弊端:不能用子类方法,可用转型的方法解决 转型: ·向上转型:【自动】父类 父类对象 = 子类实例; Fu f...

weixin_43827227的博客 1万+

5、Raspberry Pi CPU架构与多线程编程详解

本文详细介绍了Raspberry Pi的CPU架构(包括ARMv6Z、ARMv7-A和ARMv8-A),通过/proc/cpuinfo解析硬件信息,并深入探讨了多线程编程的核心技术。内容涵盖pthread库的使用,如线程创建、属性设置、等待与分离、线程同步机制(互斥锁),以及实际应用场景如多媒体处理和网络服务。同时强调了线程安全、死锁预防和资源管理等关键注意事项,帮助开发者在Raspberry Pi上构建高效稳定的多线程应用。

sre5engineer的博客 95

Java中编译时多态与运行时多态

文章目录1. 什么是多态2. 编译时多态3. 运行时多态总结Reference 口诀:成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边 当父类变量引用子类对象时(Father f = new Son();),在这个引用变量f指向的对象中,它的成员变量和静态方法与父类是一致的,他的非静态方法,在编译时是与父类一致的,运行时却与子类一致(发生了复写) 1. 什么是多态 多态是指允许不同子类型的对象对同一行为作出不同的响应。例如在生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞

xylitolz的博客 9381

Android 13 SPRD 源码默认打开多用户实际无效果问题修复

【代码】Android 13 SPRD 源码默认打开多用户实际无效果问题修复。

m0_60898338的博客 449

YOLOv11改进 | 上采样篇 | YOLOv11引入DySample轻量级动态上采样器

虽然最近的基于内核的动态上采样器(如CARAFE、FADE和SAPA)的性能提升令人印象深刻,但它们引入了大量工作负载,主要是由于耗时的动态卷积和用于生成动态内核的额外子网。DySample模块的设计旨在解决现有动态上采样器的高计算开销和复杂性问题,同时提供更好的性能和效率。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 3128

多态

1、多态的基本介绍   所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用...

weixin_30540691的博客 3582

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

多态 静态多态 动态多态

抽象类提供一个框架,强制子类实现特定的功能。

weixin_43490759的博客 2936

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java 多态的应用——多态数组和多态参数详解

java 多态的应用——多态参数和多态数组内容分享,本篇博文为java 面向对象三大特性——多态篇的补充。

优快云 / 稀土掘金/ B站 / GitHub: Cyan_RA9 3837

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++多态——静态多态与动态多态

多态:顾名思义,多态就是多种形态,也就是对不同对象发送同一个消息,不同对象会做出不同的响应。并且多态分为静态多态和动态多态。静态多态就是在系统编译期间就可以确定程序执行到这里将要执行哪个函数,例如:函数的重载,对象名加点操作符执行成员函数等,都是静态多态,其中,重载是在形成符号表的时候,对函数名做了区分,从而确定了程序执行到这里将要执行哪个函数,对象名加点操作符执行成员函数是通过this指针来调用的

stay_the_course的博客 1万+

C++ 多态全解析:静态多态与动态多态详解

本文将系统梳理多态的定义、官方权威解释、静态与动态多态的区别、典型代码与注意事项,帮助你彻底搞懂C++多态。

Darker的博客 2325

多态性

多态性 多态性的概念 派生一个类的原因并非总是为了继承或添加新成员,有时是为了重新定义基类的成员,使基类成员“获得新生” 面向对象程序设计的真正力量不仅仅是继承,而是允许派生类对象像基类对象一样处理,其核心机制就是多态和动态联编 多态是指同样的消息被不同类型的对象接收时导致不同的行为。所谓消息是指对类成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数 从广义上说,多态性是指一段程序能够处理多种类型对象的能力 在C++中,这种多态性可以通过重载多态(函数和运算符重载),强制多态(类型强制转换),

weixin_51958878的博客 5264

Java多态:多态多态,多种形态

Java多态:灵活处理对象的行为展现机制

子夜的个人博客 1742

参数多态、包含多态、过载多态和强制多态

多态分为两种:通用的多态和特定的多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。     通用多态又分为参数多态(parametric)和包含多态(Inclusion Polymorphism);特定多态分为过载多态(overloading)和强制多态(coercion)。     强制多态(

飞老虎 1万+

面向对象设计领域中的参数多态,包含多态,过载多态和强制多态

在面向对象设计中,多态性是一个重要的概念,它允许我们以一种统一的方式处理不同类型的对象,并根据对象的实际类型来执行相应的行为。通过将具体的对象看作是其父类或接口的实例,并在方法调用时根据实际的对象类型来确定具体的执行逻辑,我们可以以一种统一的方式处理不同类型的对象。- 当方法需要操作的对象类型不确定时,可以使用多态来接受不同类型的对象,减少代码的重复。使用场景: - 当需要执行类似的操作,但操作的参数类型或个数可能不同时,可以使用过载多态来定义多个方法,使得代码更清晰、简洁,并提高代码的可读性。

辣香牛肉面的博客 1468

静态多态和动态多态的区别

#include <iostream> using namespace std; class A { public: virtual void function() { cout << "I am A" << endl; } }; class B :public A { public: void function() { cout << "I used to be A but now I am B" << endl; } void fun

weixin_45027171的博客 6919

多态性之编译期多态和运行期多态(C++版)

编译期多态和运行期多态(C++版)     C++中最为经典的就是多态性,多态性充分体现了面向对象的思想,并且是C++与C的最大区别之一。多态性分为编译期多态和运行期多态,也称为静态多态和动态多态,有些人也称其为编译时多态和运行时多态,不管什么称呼,万变不离其宗,一个是编译期的静态的多态,一个是运行期的动态的多态,那么它们在C++中分别体现在哪里呢?又有什么区别呢?下面将详细介绍(重点是

君临天下的博客 7244

C++ 多态详解:从静态多态到动态多态

从字面上理解,多态就是“多种形态”。在程序设计里,它指的是:使用,却可以对做出不同的具体行为。virtual。

2301_80345648的博客 1188
上一篇: 继承之重写(覆盖)父类方法的约束总结
下一篇: 9月13号某公司一道有趣面试题
coder_Ning
博客等级 码龄10年 1粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值