黑马程序员_面向对象(多态)

双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码) ​上一篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法,这篇博客将介绍使用yalmip的双层优化问题的求解方法。 1.KKT函数 通过调用yalmip工具箱中的KKT函数,可以直接求出优化问题的KKT条件,省去自己手动写的步骤。 2.solvebilevel函数 solvebilevel是yalmip工具箱内置的求解双层优化问题的函数。也就是通过这个函数,不需要咱手动写KKT条件,也不需要使用KKT函数,直接把上、下层优化的目标函数、约束条件往里面一放,就能求出结果。 ​ 阅读详情

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 

面向对象(多态)

多态概念

多态:可以理解为事物存在的多种体现形态。现实生活中的事物来说,猫,即是猫也是动物,一个人是男人也是人。就是说一个事物可以以不同形态来描述和表示,这就可以理解为多态。程序中,函数的重载性也是一种多态,同一个函数名在类中存在多个函数,但是具体体现方式不一样。

举例来说,比如:动物,都具有吃的行为,但每种动物吃的东西都不一样,所以可以定义成抽象。猫,是动物的一种,它吃鱼,这就是把动物吃的行为具体的实现了(程序上体现是implement父类),同时它有自己的特有的行为,抓老鼠。狗,也是动物的一种,它吃骨头,也实现了动物中吃的行为,也有自己特有的属性,看家。看下图:                          

  

 

我们调用每个动物的吃的行为,通过建立每个动物的对象即可调用。但注意看,每个动物都继承了动物父类,那么我们就可以通过这个形式来进行引用:

                    父类名 名称 =  new  子类名();

这就是多态的体现。

     具体来说就是:父类的引用指向了子类的对象,父类的引用也可以接受自己子类的对象。这样,其实也就是提高了程序的拓展性,子类只要继承或实现父类,并覆盖父类方法,那么就可以被父类引用所指向。比如程序中,一个函数可以接受猫这个对象,这个函数中可以实现子类吃的方法,那如果接受狗这个对象,就得在建立一个函数,这样程序就比较冗长而且死板,之后又更多父类的是动物的其他子类动物类进来,那岂不是建立更多的对象?所以,可以把接受的子类对象改为接受一个父类的引用,就是程序里接受一个动物类的引用。因为父类引用指向子类对象,所以我们可以向函数里传递不同的子类对象,如果之后又新的子类对象加进来,只需继承父类并覆盖父类方法即可,这样就提高了程序的拓展性。

但是,要注意的是,父类引用只能使用父类中的成员,通俗来讲,父类的引用指向子类对象,在父类应用调用方法时,只能调用子类已覆盖父类方法的方法,如果子类中有自己特有方法,运用父类引用调用时就会出错。那上述动物,猫,和狗来说,父类中只有一个方法,那就是吃,猫和狗覆盖了吃的方法,所以动物的引用就能调用子类中吃的方法,而不能调用猫和狗中特有方法(抓老鼠和看家)。

 

总结的来说:

 

1) 多态体现在:父类引用指向子类对象,父类引用接受子类对象

2) 多态的前提:类与类之间有继承或是实现的关系

3) 多态的前提:子类中必须存在覆盖,而且父类引用调用只能调用覆盖的方法和父类成员

4) 多态提高了程序的拓展性,因为可以往里添加其他子类模块

5) 多态弊端:就是只能使用父类的引用方法父类中的成员

 

多态的应用

看一个程序:

abstract class Animal {

         abstractvoid eat();

}

class Catimplements Animal  {

         publicvoid eat(){

                   执行语句(吃鱼);

         }

         publicvoid catchMouse(){

                   执行语句(抓老鼠);

         }

}

我们在使用多态的时候,会有这样的语句:

                   Animal  a = new Cat();

其实这样做,是做了自动类型提升的动作,称为向上转型,这样我们就可以用父类中的成员。但我们相拥猫中的特有方法时该怎么操作,如果再建立一个对象时,那就是另一只猫了。这里,我们就向下转型,准确来说是强制将父类的引用转成子类类型。程序就改变了:

                   Cat   c  =(Cat) a;

这样就可以使用子类的特有方法了:

                   c.catchMouse();

但要注意一点,如果建立父类的对象,那么就不能向下转型,因为猫一定是动物,而动物一定是猫,也可能是其他动物,程序如下:

                     Animal  a = new Animal();

                     Cat  c = (Cat) a;---------------------à这样是错误的

这里要注意,我们用的一是对象的引用,仅是引用,二是至始至终都是子类对象在变化,不管是自动向上转型,还是手动向下转型。

 

在看一个示例:

      publicstatic void function(Animal a ) {

                            a.eat();

}

在这个方法中,可以传入子类对象,然后用父类成员,但是想在这个方法中用到子类特有的方法,那就得向下转型。由于我们不知道会传入什么样的子类对象,所以要先进行判断。这样就用到了又一个关键字:instanceof 意思是a 是否是 b类型的。所以上面程序可加入:

                                 if(a instanceof Cat){

     Catc =(Cat)a;

     c.catchMouse();

}

总结:

1)  父类引用指向子类对象,会自动提升子类类型,叫向上转型

2)  父类引用指向子类对象,可以向下转型,父类自己的对象不可以向下转型。

3)  注意,向上转型和向下转型都是子类在变化

4)  新关键字instanceof  判断一个引用是否是另一引用类型。

 

 

1、在多态中成员函数(非静态的)的特点:

编译时期:参阅引用型变量所属类中是否有调用的方法,如果有,编译通过,若没有编译失败。

运行时期:参阅对象所属类中是否有调用方法。

简单来说,就是编译看左边,运行看右边。

2、在多态中成员变量的特点:

无论运行和编译,都参考左边(引用型变量所属类)。

3、在多态中静态成员函数特点:

无论运行和编译,都参考左边。

 

看一个实例程序:

interface PCI  //定义一个PCI接口,指定规则

{

         publicvoid open();

         publicvoid close();

}

class MainBorad

{

         voidrun(){

                   System.out.println("mainboradrun");

         }

         publicvoid usePCI(PCI p){ //使用PCI接口

                   p.open();

                   p.close();

         }

}

class NetCard implements PCI //符合PCI接口规则,程序上对里面的方法进行复写

{

         publicvoid open(){

                   System.out.println("netcardopen");

         }

         publicvoid close(){

                   System.out.println("netcardopen");

         }

}

class Test

{

         publicstatic void main(String[] args){

                   MainBordm = new MainBorad();

                   m.run();

                   m.show(newNetCard());//调用的时候,传入necard对象,这里实现了多态

         }

}

 

上述程序里,接口充当了父类,由接口指向了子类的实例对象,所以作为一个规则,就可以让其他子类实现功能,而传入接口引用,这样就实现了程序功能的拓展性。

 

可以说,我们通过主体去引用接口程序,就是在对外制定一个规则,同时主体使用这个接口(通常做法就是使用接口的引用),然后建立我们需要的类来实现接口的规则(复写接口的方法),然后对接(传入实现类的对象,因为接口引用指向子类对象,这就是多态),这样就完成规则的定制和外部功能的接入。之后只要我们符合这个规则,那么就可以实现好多不同的功能,进而实现了程序的拓展性。

Vmware Vcenter7.0证书web续期发生错误 生成证书,选择第三个(PS,如果没有域名的,一定要写IP,不然很容易卡在85%,服务不能起来)这里大概率可能是证书里面的FQDN和主机不匹配,又或者是主机解析FQDN有问题。vCenter _MACHINE_CERT快到期了,通过web界面更新证书失败。vSphere Client 版本 7.0.2.00200。登陆ssh到vcenter,重新生成证书。先关掉HA,不然证书管理会报错。第一步先这样,重新续订一下证书。 阅读详情

相关推荐

透传产品上报AEP平台数据流程

1. 什么是数据透传 数据透传:指的是在通讯中不管传输的业务内容如何,只负责将传输的内容由源地址传输到目的地址,而不对业务数据内容做任何改变。 这篇文章描述了如何将一台NB设备通过透传方式将数据传输到AEP平台,再通过数据订阅的方式获取到这些数据。 2. 步骤 2.1 设备在AEP平台创建 AEP:https://dm.ctwing.cn/ 新建产品 添加设备 根据模组的15位IMEI添加设备 开启内网穿透 具体可参照我的这篇博客:内网穿透-如何进行本地数据调试 设置数据推送

qq_42265394的博客 2297

继承与多态

面向对象的三大特征: 封装 继承 多态继承:继承是避免冗余,提高代码的可重用性 继承的传递性: 直接父类 间接父类 继承需要符合的关系:is-a 子类和父类需要满足is-a关系才存在继承 继承概念下的is-a 关系是个单向的关系 *子类具有父类的属性和行为,以及自身特殊的属性和行为* 现创建一个Animal类并且有一个吃东西eat的行为 接着

fanzef2n9的博客 275

ollama服务暴露公网?三步搞定Nginx反向代理配置(避坑指南)

本文详细介绍了如何通过Nginx反向代理安全地将Ollama服务暴露到公网,避免直接修改OLLAMA_HOST带来的安全隐患。文章提供了从SSL证书部署到高级安全加固的全流程实战指南,包括IP白名单、基础认证、速率限制等企业级安全措施,帮助用户实现安全可靠的外部访问。

wood5的博客 177

黑马程序员——面向对象(多态)

黑马程序员——面向对象(多态)

qq314777895的专栏 549

Windows系统的Mamba环境配置详细教程(状态空间模型)

causal_conv1d也是安装mamba的依赖必须库。安装完成后,通过pip list可以查看到安装的库。Triton是安装mamba的依赖,需要先安装。上述工作准备好后,按下面步骤安装。直接根据离线文件安装即可。是自己的虚拟环境名字。

2301_77831163的博客 3677

PP生产订单的BADI增强 WORKORDER_UPDATE

我们的项目需求是: 1、 保存时检查工单BOM是否存在物料号相同的行项目,如果有则提示“物料& 重复,请检查工单BOM” 系统增强出口:PPCO0001,检查组件行项目是否有重复物料项 开始以为的增强增强看一下是用PPCO0001还是PPCO0007 后来找到了badi WORKORDER_UPDATE IF_EX_WORKORDER_UPDATE~BEFORE_UPDATE

ERP运维咨询(目标和成功) 4636

黑马程序员_java面向对象——多态

------- android培训、java培训、期待与您交流! ---------- java面向对象——多态 一、   多态的概念。 多态是面向对象程序设计三大特性之一。是指面向对象程序运行时,相同的信息可能会送给多个不同的类型之对象,而系统可依据对象所属类型,引发对应类型的方法,而有不同的行为。简单来说,所谓多态意指相同的信息给予不同的对象会引发不同的动作称之。 多态的前提是继承或

xiongyongbiao的专栏 333

摄像头模组CCM简介

摄像头模组,全称Camera Compact Module,简写为CCM。CCM 包含几大件: 镜头(lens)、音圈马达(VCM)、传感器(sensor)、软板(FPC)、图像处理芯片(DSP)。工作原理:物体通过镜头(lens)聚集的光,通过CMOS或CCD集成电路,把光信号转换成电信号,再经过内部图像处理器(ISP)转换成数字图像信号输出到数字信号处理器(DSP)加工处理,转换成标准的GRB、YUV等格式图像信号。摄像头模组主要由以下几个部分组成:镜头(Lens):将光线汇聚到图像传感器上。

m0_73482095的博客 1万+

黑马程序员_java面向对象 多态

                                黑马程序员_java面向对象  多态                                                ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、多态 多态:可以理解为事物存在的多种体现形态 一般重点为对象的多态性,像函数也有多...

dh565067796的博客 298

【Docker】完美解决拉取镜像超时报错:ERROR: Get https://registry-1.docker.io/v2/

因为我们下载的镜像是外网的镜像资源,所以下载的速度会非常的慢,甚至大概率下载时会报错,所以需要我们配置一个国内的服务器镜像地址,国内服务器镜像地址有很多,这里咱们就说一下阿里镜像加速器的配置方法。

liu_chen_yang的博客 12万+

22、狭义相对论与曲线坐标空间相关知识解析

本文深入解析了狭义相对论与曲线坐标空间的核心概念,涵盖能量-动量张量的定义与守恒、曲线坐标系下的度量张量与基向量性质、协变与逆变张量的变换规则,并介绍了克里斯托费尔符号与协变导数的计算方法。进一步探讨了在弯曲空间中进行微积分运算的基础理论及其在广义相对论中的关键应用,如爱因斯坦场方程如何描述物质-能量对时空曲率的影响,为理解黑洞等引力现象提供了理论框架。

lambda的博客 116

黑马程序员_OC面向对象之继承和多态

一、继承

如果你错过了一天,那么你就真的错过了一天! 4621

赛豆科技 AIVA 汽车智能体架构演进面试题与答案

摘要 赛豆科技AIVA汽车智能体架构从座舱AI演进到整车智能体,最终实现自进化的超级智能体。其核心是"先有AI再有车"的理念,将AI作为产品主轴而非附加功能。架构设计采用端-边-云协同,确保低延迟响应;整车智能体通过Planner、Tool Registry等关键组件实现自主决策;自进化机制结合车端个性化学习和云端群体学习,并设置多重安全验证。多域协作采用分层架构,关键安全功能仍由确定性逻辑控制。该架构实现了从被动响应到主动服务的范式转变,使车辆能够持续进化。

AI天才研究院 122

黑马程序员——面向对象的特性之多态

面向对象共有三大特性,封装,继承和多态,这里主要说一下多态。 一、多态 1.多态的基本概念 多态就是一个父类在声明的时候不确定自己指向哪个子类对象,只有在程序运行时才能确定自己指向哪个子类对象,从而使用一个父类有可以展现出多种子类的形态。 2.多态的体现 Person *p = [Student new]; p->age = 100; [p walk]; 子类对象赋值给父类

u013231295的专栏 419

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

黑马程序员笔记——Java面向对象之多态

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 多态 什么是多态 多态可以理解为事物存在的多种体现形式 多态的体现 父类的引用指向了自己的子类对象。 父类的引用也可以接受自己的子类对象。 多态的前提 必须是类与类之间有关系。要么继承,要么实现 多态的好处 多态的出现大大的提高程序的扩展性 多态的弊端

u014646324的专栏 566

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

黑马程序员—面向对象(多态)

多线程: 进程: 是一个正在执行中的程序,每一个进程执行都有一个执行的顺序。该顺序是一个执行路径或者叫一个控制单元 CPU不断切换对进程进行执行 线程: 线程就是进程中一个独立的控制单元,线程在控制着进程的执行 一个进程中至少有一个线程  *   * 多线程存在的意义  * 线程的创建方式  * 多线程的特性  */ /*  * Java VM 启动的时候

闵兰程 458

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

黑马程序员——面向对象15:多态

------- android培训、java培训、期待与您交流! ----------

axr1985lazy的专栏 654

黑马程序员_面向对象之多态

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流------ /* 多态: 同一种事物,在不同时刻的状态 举例: 猫是猫的一种: 猫 m = new 猫(); 猫同时也是动物: 动物 d = new 猫(); 多态的前提: a: 要有继承关系 b: 需要有方法重写. 没有方法重写也是可以的,但是没有意义

dai_bo_yang的博客 425

黑马程序员—面向对象之多态

------- Windows Phone 7手机开发、.Net培训、期待与您交流! ------- 多态是面向对象里面的一个重要概念,从字面上可以理解为一个对象所表现出的多种状态。实现多态有三种方法:虚方法、抽象类、接口。 虚方法: 用virtual修饰的方法叫做虚方法。父类的方法里标记virtual表示可以让子类通过override关键字重写这个方法,如public v...

weixin_30414635的博客 77

黑马程序员_面向对象三大特性之——多态以及异常概述

---------------------- ASP.Net+Android+IOS">http://edu.youkuaiyun.com"target="blank">ASP.Net+Android+IOS开发、<a href=".Net">http://edu.youkuaiyun.com"target="blank">.Net培训、期待与您交流! ---------------------- 一、多态的定义

Cla_CSharp1126XueXi的专栏 1498

黑马程序员-面向对象三大原则——封装、继承、多态

一、面向对象三大原则——封装、继承、多态    1、封装是隐藏类的具体细节,这些细节信息是不需要被调用者所了解的,这样最大限度地保证了类的安全性    2、继承可以简化类的设计,并提高代码的可重用性。程序员可以直接使用别人事先写好的基类中已经存在的功能,而不需要重新         对功能进行编码。    3、多态可以使类中名称相同的功能具有不同的实现方式,在调用类的一些功能方法的时候

u014241593的专栏 1141

黑马程序员————面向对象之多态

------- android培训、java培训、期待与您交流! ---------- 众所周知,面向对象思想有三大特征:封装,继承,多态。 下面详细说说多态。 举个例子,猫对应的类型是猫类型,同时也是动物类型,很明显动物是猫的父类。我们在创建猫对象的时候,可以用:     猫 cat = new 猫();也可以用:动物cat = new 猫();第二种方法就是父类型引

jinger5186的博客 402

黑马程序员_面向对象_继承多态

/**  * 面向对象_继承多态  *  面向对象中对于类之间存在单继承,并不存在多继承,但可以多层继承  *  子类继承父类的所有非私有化成员,调用时使用super调用,子类可以重写父类的方法  *  构造方法:  *  子类的所有构造方法必须访问父类的构造方法,子类的构造方法中第一行默认给出super()  *  若父类没有空参构造方法,子类需要用sup

gmz158的专栏 378

黑马程序员——java基础——面向对象的多态

android培训、java培训期待与您交流! 因为多态的应用比较多所以整理一下我对多态的学习。 多态:同一个对象(事物),在不同时刻体现出来的不同状态。 举例: 猫是猫,猫也是动物的子类。 多态的前提:父类的引用类型变量指向了子类的对象,或者是接口的引用类型变量指向了实现类的对象。 1:要有继承关系。 2:要有方法重写。 动物 d = new 猫(

黑马程序员——ItBin2015的博客 698

黑马程序员——Java面向对象——多态

面向对象 多态: 多态的概述:某一类事物的多种存在的多种形态。 1,多态的体现 父类的引用指向了自己的子类对象。 父类的引用也可以接收自己的子类对象。 2,多态的前提 必须是类与类之间有关系。要么继承,要么实现。 通常还有一个前提:存在覆盖。 3,多态的好处 多态的出

苦行僧 650

黑马程序员_Java语言_面向对象_多态

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-09.01_面向对象(多态的概述及其代码体现)

jiao142857的博客 884
上一篇: 黑马程序员_面向对象(封装)
下一篇: 黑马程序员_Object和内部类
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值