40、面向对象编程:多态性与接口

面向对象编程:多态性与接口

1. 多态性概述

多态性使我们能够编写程序,将共享同一个超类的对象当作该超类的对象来处理,这可以简化编程。借助多态性,我们可以设计和实现易于扩展的系统,程序中需要修改以适应新类的部分,仅仅是那些需要直接了解新类的部分。

当编译器遇到通过变量进行的方法调用时,它会检查变量的类类型,以确定该方法是否可以被调用。如果该类包含正确的方法声明(或继承了一个),则调用会被编译。在执行时,变量所引用的对象的类型决定了实际使用的方法。

2. 抽象类和方法

抽象类不能用于实例化对象,因为它们是不完整的。其主要目的是提供一个合适的超类,供其他类继承,从而共享共同的设计。能够用于实例化对象的类称为具体类,它们为声明的每个方法提供实现(有些实现可以继承)。

程序员通常编写只使用抽象超类的客户端代码,以减少客户端代码对特定子类类型的依赖。抽象类通常包含一个或多个抽象方法,抽象方法不提供实现。包含任何抽象方法的类必须声明为抽象类,每个具体子类必须为超类的每个抽象方法提供实现。构造方法和静态方法不能声明为抽象方法。

抽象超类变量可以持有从该超类派生的任何具体类的对象引用,程序通常使用这些变量以多态方式操作子类对象。多态性在实现分层软件系统时特别有效。

以下是抽象类和具体类的特点对比表格:
| 类别 | 能否实例化 | 方法特点 | 用途 |
| ---- | ---- | ---- | ---- |
| 抽象类 | 否 | 包含抽象方法,可包含有实现的方法 | 提供共同设计,减少代码依赖 |
| 具体类 | 是 | 为声明的方法提供实现 | 实例化对象执行具体

相关推荐

6、《Objective-C 面向对象编程与继承的魅力》

本文深入讲解了Objective-C面向对象编程的核心概念,重点探讨了继承在减少代码重复、提高可维护性和扩展性方面的作用。通过实例代码,分析了类的接口与实现、实例化对象、冒号在方法名中的意义、继承与多态性等关键知识点,展示了面向对象编程相较于过程式编程的优势,并强调了开闭原则在软件设计中的重要性。

net55的博客 111

C++中基类指针与多态性的实践应用

本文通过分析C++代码示例,探讨了基类指针如何指向派生类对象,以及在多态性中虚拟函数的使用。重点解释了指针的类型兼容性、基类与派生类成员访问的差异,以及如何通过虚拟函数实现运行时的多态性。通过程序示例展示了基类指针指向不同对象时调用不同版本函数的行为,以及如何通过虚拟函数实现不同派生类对象的统一接口。

weixin_35370061的博客 512

探索Java编程:谢家俊代码集40的深度解析

本文还有配套的精品资源,点击获取 简介:本文档是对一个名为"java代码-40,谢家俊"的Java代码集合的深入分析。集合编号为40,可能包含40个针对不同编程概念和问题解决方案的Java代码片段。文档从基础概念到高级应用,详细介绍了Java编程的核心知识点,如面向对象编程基础、异常处理、I/O操作、集合框架、多线程、网络编程、设计模式、API和库的使用、代码注释及调试和测...

weixin_33670640的博客 832

避开STM32H7的‘保护陷阱’:从Option Byte机制深度解析读写保护原理与预防

本文深度解析STM32H723VGT6的Option Byte保护机制,详细讲解RDP读保护和WRP写保护的工作原理及配置方法,并提供硬件设计防御策略和软件预防性编程技巧,帮助开发者避免误触发保护机制导致芯片锁定的问题。

weixin_33686714的博客 442

面试题-手撕NMS(非极大值抑制)

非极大值抑制(Non-Maximum Suppression,NMS)是一种常用于目标检测和计算机视觉中的算法,用于去除重叠的边界框,保留最可能是真实目标的边界框。其核心就是对一组检测框,找出其中属于同一个类别且分数最高的那个框,然后把和这个框的IOU值大于阈值的那些框都删掉。

zhaoyqcsdn的博客 1109

WorkBench3.2 + VxWorks6.8安装教程

按照FTP连接主机和目标机,将整个VxWorks6.8的安装分为两个部分,一是在主机(win10系统,可以使用虚拟机或者实体机,推荐使用虚拟机)上安装workbench3.2,进行bootrom与VxWroks映像文件的生成,二是在虚拟机上安装VxWorks系统 19.10.10 首先很高兴文章能帮到大家,但由于本人已不做该方向良久,私信和评论的很多问题现在已经无法解答,如果大家有什么问题欢迎...

Alive的博客 3万+

Python+gensim【中文LDA】简洁模型

文章目录完整代码过程详解words_lsdictionarydictionary.doc2bow函数corpuslda 完整代码 from gensim import corpora, models import jieba.posseg as jp # 待分析文本集 text1 = '美国教练坦言,没输给中国女排,是输给了郎平' text2 = '中国女排世界排名第一?真实水平如何,听听巴西和美...

ArYe 2万+

华为OD技术面真题 - 数据库Mysql - 1

汇总华为OD技术面高频Mysql相同问题,提供详细解答。

qq_45776114的博客 1086

Python爬虫实战:基于Scrapy与Playwright高效爬取人民网新闻数据

本文将详细介绍如何使用Python最新技术栈(Scrapy框架结合Playwright浏览器自动化工具)高效爬取人民网新闻数据。文章包含完整项目搭建、反反爬策略、数据解析存储以及性能优化等核心内容,提供可直接运行的代码示例,适合中高级Python开发者学习现代网络爬虫开发技术。python# 去除特殊空白字符。

2201_76125261的博客 1122

Python 爬虫实战:在房天下抓取房产信息,分析房价走势

通过本次 Python 爬虫实战,我们成功地从房天下爬取了房产信息,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分区域的房产数据,且未对房产的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多区域的房产数据,并深入分析房产的多媒体内容、用户行为模式等,为购房者和房地产从业者提供更有价值的数据支持。

u014481728的博客 1372

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型

一、本文介绍 本文记录的是基于 GhostNetV3 的 YOLOv11 轻量化改进方法研究。GhostNetV3的轻量模块采用重参数化方法,训练时为深度可分离卷积和1×1卷积添加线性并行分支,推理时通过逆重参数化移除分支、折叠操作,能够在不增加推理成本的同时提高性能,从而实现YOLOv11的轻量化改进。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进 专栏地址:YOLOv11改进专栏——以发表论文的角度,快速

Limiiiing的博客 1846

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 13、物联网开源平台和操作系统
下一篇: 14、跨站点连接:Azure 虚拟网络互联指南
java5
博客等级 码龄22年 85粉丝 2103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值