面向对象(OOP)思想3

【NOI级-C++程序设计:1、面向对象的程序设计思想 (OOP)】 1、定义:面向对象的程序设计(Object-Oriented Programming, OOP)是一种通过 “对象” 来组织程序的编程方式,它将数据(属性)和操作数据的函数(方法)捆绑在一起,形成一个独立的单元。因此,对象的抽象是类,类的具体化就是对象,是用户自定义的数据类型,定义了对象的属性和行为(即方法),也可以说类的实例是对象。目的:将数据(属性)和操作数据的函数(方法)捆绑在一起(即对象),并通过访问控制(private、protected、public)隐藏内部实现细节。 阅读详情

1.再谈构造函数
在我前面写的博客面向对象(OOP)思想2中,我介绍了基本构造函数的使用
但是值得注意的是前面所使用的构造函数实际上并不是对对象进行初始化,而是简单的赋值
Date(int year,int month,int day)
{
_year=year;//赋值操作
_month=month;
_day=day;
}
事实上,C++有对对象的初始化语法,话不多说,先上代码
Date(int year,int month,int day)
:_year(year),
_month(month),
_day(day)
{}
这样,就完成了对类成员变量的初始化
注意事项
1.每个成员只能初始化一次
2.类中包含const,引用,自定义类型成员(该雷没有默认构造)
事实上这里有一个坑,请看一下代码
class Date
{
public:
Date(int c)
:
_c©,
_b(2*_c),
_a(2*_b)
{
}
private:
int _a;
int _b;
int _c;
};
如果这样进行初始化,我们调用打印函数去打印_a,_b,_c的值的时候会发现:
_a和_b打印的实际上是随机值
为什么呢?
因为成员的声明顺序就说初始化顺序
和初始化列表中的顺序无关
比如这里事实上编译器是先初始化_a的,然后_b是个随机值,从而造成这种尴尬的场面
class Date
{
public:
Date(int c)
:
_a©,
_b(2*_a),
_c(2*_b)
{
}
private:
int _a;
int _b;
int _c;
};
这样写就可以
2.static成员
定义: 声明为static的类成员成为静态成员,用static修饰的成员变量,称为静态成员变量,用static修饰的成员函数,称为静态成员函数,静态成员变量一定要在类外进行初始化
特征:
1.静态成员为所有类对象所共享,不属于某个实例
比如
class A{
public
static int _a;
};
int A::_a=0;
A a;
A b;
a._a++;
b._a++;
那么_a的值将是2
2.静态成员必须在类外进行定义,定义时候不加static关键字
3.静态成员都可以用类名::静态成员或者对象.静态成员进行访问
4.静态成员函数没有隐藏的this指针,不能访问任何非静态成员
5.静态成员和普通成员一样,也可以用public,private,protected来进行修饰管理,也可以具有返回值
3.友元
1.友元函数
友元函数是定义在类外部的普通函数,它可以访问类中的所有成员,包括private和public以及protected,不属于任何类,定义时候必须要friend关键字来进行修饰
注意事项
1.友元函数可以访问类的所有成员
2.友元函数不可用const修饰
3.友元函数可以定义在任何地方,不受类的访问限定符限定
4.友元函数的调用方式和普通函数无区别
2.友元类
友元类的可以访问类中的所有成员
使用方法和友元函数类似
friend关键子+ class+类名称即可
有个大前提是有员类必须先进行声明,必须存在
注意事项:
1.友元类可以访问类的所有成员
2.友元类具有单向性,事实上可以理解为单相思,及友元类可以访问类的所有成员二类不能访问友元类的私有和保护成员
3.友元关系不可以传递
比如A是B的友元B是C的友元
但是A并不是C的友元
事实上这很显示,你兄弟的兄弟不一定是你的兄弟
4.内部类
如果一个类的内部还有类,那么这个内部的类就叫做内部类
需要注意的是内部类是一个独立的类,它绝对不属于任何一个类的子类
外部类没有方位内部类成员的权限
事实上内部类是外部类的一个友元类
它可以访问外部类的所有成员
甚至可以直接访问外部类的static成员,枚举成员
3.sizeof(外部类)和内部类没有什么关系

Python3面向对象【20260706】007篇 特性在本项目中的体现封装Validator内部细节隐藏在类内继承Server继承Asset复用基类属性多态接受任意可迭代的服务器集合魔术方法__str__美化打印、__eq__比较对象、__repr__调试显示类属性STATUSES共享常量静态方法Validator中独立校验函数依赖注入接收storage而非自己创建单一职责每个类只负责一个领域(模型/存储/校验/管理)这个系统已经具备了一个 CMDB 核心功能,如果要扩展(比如加入用户认证、SSH 连接、Excel 导出等),只需新增相应的类即可,符合。 阅读详情

相关推荐

R语言中的面向对象编程实践

本文介绍了面向对象编程(OOP)的基本概念,以及如何在R语言中应用OOP思想。通过R语言的S3对象系统,我们展示了如何实现封装、继承和多态性。文中还对比了过程式编程(POP)和面向对象编程(OOP)在代码维护和扩展上的不同,并提出了R语言作为企业级编程语言的潜力。

weixin_34471637的博客 450

面向对象(oop思想)

面向机器(汇编)-------》面向过程(C语言)-------》面向对象语言(java内部细节不知道,但是知道如何使用!)--------》面向接口编程--------》面向组件编程-------》面向切面(方面)---------》面向服务(微服务)  |------scanner sc=newscanner(system.in); |-------String[] str=new Strin...

brid_fly的博客 1034

4.2 结构翻模

结构翻模功能可以将DWG文件中的二维图线对象:轴网、墙、柱、梁、基础、房间和面积等快速转换成Revit模型对象,翻模速度快,准确率高。与先前的模盒翻模功能不同,结构翻模不再需要在AutoCAD中提取模型的图线,所有操作在Revit均可完成。(1)翻模程序适用于钢筋混凝土结构的平法DWG文件。(2)将平法中所表示的轴网线,轴网文字,结构柱,梁,结构墙在Revit 中重新建出来。(3) 模盒可以翻出连...

fishbuaa的专栏 1796

3.使用C语言实现伪面向对象的思想(OOP)

这种继承模拟比较脆弱,主要依赖于内存布局。没有 C++ 中继承的很多特性(如访问控制、构造函数链式调用等)。封装是将数据和操作数据的方法捆绑在一起,并隐藏对象的内部实现细节。多态允许我们以统一的方式处理不同类型的对象。在 C 中,主要通过。C 语言没有原生的继承。

weixin_45535478的博客 845

【信道编码/Channel Coding】线性分组码

这是本专栏信道编码/Channel Coding的第二站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍线性分组码的基本原理。

Tomatomatodo的博客 9243

SAP成本核算变式OKKN配置详解:从CK11N到CK24,手把手教你搞定标准成本发布

本文深入解析SAP成本核算变式OKKN的配置原理与实战应用,涵盖从CK11N到CK24的标准成本发布全流程。详细讲解数量结构控制、价值结构配置及间接费用计算规则,帮助成本会计精准掌握标准成本计算逻辑,解决BOM版本选择、工艺路线获取等常见问题,提升企业成本管理效率。

weixin_27219587的博客 286

Java(3)--面向对象编程思想(oop)---多态

面向对象编程思想:抽象 继承 多态 封装 对象:万事万物皆对象. 类:把具有相同属性和方法的对象抽象出来形成的几何体! 类是对象的抽象,对象是类的具体! 如何描述一个类 属性(属性不初始化时也有初始值,会自动初始化,整形为0 小数型为0.0 boolean...

158

推荐系统公平性之流行度偏差(fairness in recommender systems -- popularity bias)

主要参考论文:《The Unfairness of Popularity Bias in Recommendation》 RMSE@RecSys 2019 流行度偏差是什么 先定义流行物品和非流行物品。下图是(Movielens 1M)数据集中物品的评分情况。 图的横坐标表示不同物品,纵坐标表示物品的评分次数。可以看出只有少部分物品得到了很多的评分,大部分曲线尾部的物品都只有少量的评分,我们也把这部分物品称为长尾物品。在本文中,我们取曲线的前20%对应的物品为流行物品,剩余的为非流行物品(长尾物品)。 然

beilizhang的博客 5270

JavaScript 面向对象(OOP)核心总结(面试 + 实战必背)

OOP 不是 “写 class”,是 “封装 / 继承 / 多态” 思想:Vue3 + TS 中,OOP 是 “底层工具”,而非 “组件写法”;核心使用场景封装通用模块(请求、验证、工具类);复杂业务逻辑封装(如客户 / 订单管理);TS 接口 + 类实现类型约束;取舍原则组件层面:用组合式 API,不写 class 组件;逻辑层面:复杂逻辑封装成类,简单逻辑写函数;复用层面:函数式(useXXX)解决组件逻辑复用,OOP 解决通用模块复用。

weixin_39858410的博客 308

Cursor使用教程,有点难

Cursor Code Editor 不仅仅是一个代码编辑器,它更是一个集成了 AI 的全功能开发环境,帮助你从代码编写到优化的整个过程变得更加智能和高效。它通过内置的 AI 代码补全、错误检测和自动修复功能,大大减少了手动编写代码的负担,帮助你快速完成开发任务。同时,Cursor 还与多种前沿的 AI 大模型集成,包括 OpenAI 的 GPT-4o、Claude 3.5 和 Meta 的 Llama 3.1。

xiaofeitunAI的博客 1万+

1️⃣ Coze智能体基础入门教学(2025年全新版本)

不妨设想一下,倘若我们能够打造出一个数字助手,它不但能精准洞悉我们的需求,更可以独立思索、学习以及付诸行动,这便是 AI Agent 的基础理念。它恰似计算机世界里的 “智慧精灵”,能够感知周遭环境、做出判断并采取行动。AI Agent 的发展之路精彩纷呈。它走过了三个重要阶段:起初,它犹如一个被规则束缚的机器人,只能按预设好的指令开展工作。接着,它学会运用统计学方法,通过分析数据来做决策,变得越发灵活。到如今,凭借深度学习技术,它已经能够像人类一样去学习复杂的任务了。

李同学Lino的博客 4083

嵌入式OOP按键驱动设计:中断与面向对象实践

中断处理是嵌入式系统的核心机制,通过硬件触发实现事件快速响应。面向对象编程(OOP)则提升了代码的模块化和复用性。将中断驱动与OOP结合,可以构建高性能、低功耗的嵌入式驱动程序。这种架构通过分层处理模型(顶半部/底半部)平衡实时性与系统负载,利用C语言函数指针模拟多态特性实现硬件抽象。在IoT设备和工业控制等场景中,该方案能显著降低CPU负载(实测从30%降至3%),并减少40%代码量。关键技术包括自适应消抖算法、中断共享机制和硬件抽象层设计,特别适合处理物理按键、旋转编码器等输入设备。

weixin_29185199的博客 301

uni-app开发-第3篇:uni-app 页面与路由

本文详细介绍了 uni-app 中的页面开发与路由管理。首先,页面是应用的基础单元,创建页面时需在pages目录下新建文件夹和.vue文件,页面结构由<template>、<script>和<style>三部分组成。uni-app 页面生命周期函数包括onShow、onReady、onHide和onUnload,分别用于处理页面显示、渲染完成、隐藏和卸载时的逻辑。其次,路由管理通过pages.json文件配置页面路径和样式,并提供uni.navigateTo等方法进行路由

无 415

OOP面向对象的编程思想

1、面向对象的编程思想

3082

【原创教程】汇川H5U入门教案第二课

定时器指令IN输入能流从OFF变为ON时,定时器启动计时,输出Q为ON,IN输入能流从ON变为OFF时,在IN保持为OFF期间,定时器的运行时间是PT参数指定的时间,定时器定时时间达到PT参数指定的时间后,Q变为OFF。IN输入能流为ON时,ET输出值为0,IN从ON变为OFF时,在定时器计时运行期间,ET输出当前的计时时间,定时器计时时间到达PT参数指定的时间后,ET值保持。IN输入能流为ON时,在定时器计时运行期间,ET输出当前的计时时间,定时器计时时间到达PT参数指定的时间后,ET值保持;

Qinmingyue13的博客 2477

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JAVA基础语法——面向对象思想

OOP一开始我也不知道是什么东西,平时看到他们提起过,提的次数多了,百度查了一下,原来OOP就是面对对象编程,还有OOD(面向对象的设计),OOA(面向对象的分析)。 学过C的都知道C语言是面向过程的,Java和C语言不同是面向对象的。也可以理解为面向过程是机器思维,面向对象才更适合人类思维。 例如:面对过程就像是一个舔狗,一步一步的分析,一步一步的实现,一步一步的去舔那个女神,得到女神的认可,所以面向过程在开销上比面向对象大而且舔狗在舔的过程中自我感觉非常好,所以面向过程的性能比面向对象的性能好。 反之,

qq_45905724的博客 834

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java基础(3.面向对象编程思想)

目录 1. 初始面向对象 2. 方法回顾与加深 3. 对象的创建与分析 4. 面向对象的三大特征(封装,继承,多态) 5. 抽象类和接口 6. 内部类及OOP实践 1. 初始面向对象 ###面向对象&面向过程 面向过程思想(线性思维) 步骤清晰简单,第一步,第二步。。。 适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分...

weixin_42444496的博客 224

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

面向对象编程OOP

面向对象编程OOP,封装继承多态,类与对象,构造器

UohzZ的博客 188

python 面向对象(oop)

面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程 类 类也是一个对象,类就是用来创建实例对象的对象 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类的定义 # 使用class去定义一个类,可以在其中定义属性和方法,类中定义的属性和方法都是公共的,任何该类实例都可以访问 class ClassName: ...

Huangqingmeng的博客 239

OOP(面向对象)总结(有这一篇足矣)

前言:OOP是Java语言中重要组成部分,其中面向对象编程是Java中核心编程思想,今天就将OOP知识进行总结 一、思维导图 首先在总结知识点前看一幅思维导图 二、面向对象 1、首先先了解面向对象是什么(这里将面向对象和面向过程进行对比) 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发 面向对象:是把构成问题的事务分解成各个对象,...

m0_53151031的博客 2万+

OOP是面向对象编程与AOP是面向切面编程

OOP是面向对象编程,核心思想是将客观存在的不同事物抽象成相互独立的类,然后把与事物相关的属性和行为封装到类里,并通过继承和多态来定义类彼此间的关系,最后通过操作类的实例来完成实际业务逻辑的功能需求。 AOP是面向切面编程,核心思想是将业务逻辑中与类不相关的通用功能切面式的提取分离出来,让多个类共享一个行为,一旦这个行为发生改变,不必修改类,而只需要修改这个行为即可。 OOP与AOP的区别: ...

qq_42051240的博客 1457

JAVA 三大特性 OOP思想 面向对象思想

OOP:面向对象编程     OOP三大特征(记住):         封装、继承、多态     面向对象的引入:         如果不同class(类)中,存在相同的函数(功能),在开发中这种编码方式会降低程序的编码效率、复用性降低。     之前函数,是把功能提取出来,是从class(类)中提取到函数;     为了解决编码效率低、复用性差:         把相同的功能(函数...

Smithereens的学习笔记 2590

Java面向对象OOP思想概述

Java设计思想OOP思想(Object Oriented Programming)类和对象接口抽象类OOP三大特性封装继承多态OOP复用的形式 OOP思想(Object Oriented Programming) 类和对象 在面向对象中,类和对象是最基本、最重要的组成单元 类:类可以说是一个模板,它描述了一类对象的行为和状态 对象:对象是类的一个实例,有对应的状态和行为 类是做什么用的呢:模拟现实,封装数据和代码 假如说生活中常见的动物狗,它也可以说是一个类,那么具体的对象例如:中华田园犬、哈士奇、哈巴狗

狐言 1237

究竟什么是面向对象(OOP)?

前言 相信大家在刚接触java语言的时候,就知道这是一门面向对象的语言。学不好java的原因找到了,面向对象的语言,没有对象怎么学。。。 那么究竟什么是面向对象呢? 面向对象,Object Oriented Programming,简称为OOP。说到面向对象,不得不提一嘴面向过程。 面向过程 面向过程是一种自顶而下的编程模式。 把问题分解成一个一个步骤,每个步骤用函数实现,依次调用即可。 举个生活中的例子,假如你想吃红烧肉,你需要买肉,买调料,洗肉,切肉,烧肉,装盘。 需要我们具体每一步去实现,每个步骤相

CoderMy的博客 1万+

什么是OOP面向对象思想?

面向对象编程(OOP)是一种以对象为核心的编程范式,广泛应用于Java、C++、Python等语言。OOP通过模拟现实世界的对象与行为,使程序结构更加模块化、可维护和可复用。其核心特性包括封装、继承和多态。封装通过将数据和行为绑定在一起,隐藏实现细节,提高安全性;继承允许子类复用父类的属性和方法,建立类型体系;多态使对象能够表现出多种形态,增强灵活性。此外,抽象和接口与实现分离进一步提升了OOP的设计能力。相比面向过程编程,OOP更易于维护和扩展,降低了耦合度。Java通过修饰符、继承、多态、抽象类和接口等

weixin_46072507的博客 929

JAVA后端笔记03-OOP_面向对象

编程思想 1)面向对象 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为! 2)面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了!代表是C语言! 3)面向接口 开发程序的功能先定...

gaoyang426的博客 350
上一篇: 自治日历
下一篇: C++之动态内存管理
ldbite
博客等级 码龄7年 17粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值