C++中的面向对象思想

面向对象——对一个事物进行抽象,并将抽象出来的属性和行为放入到一个类中。对类中的属性和行为加以包装,使类中的属性和行为能够满足特定的要求(比如对内可见对外只暴露想要暴露的内容)。抽象层次的不同,也就表明了抽象出来的类之间具有了层级关系。通过合理、巧妙的使用这些具有层级的类构建出灵活的类间访问形式,最终形成了面向对象思想。

抽象

我一直理解不了抽象这个概念,后来我用一个词来代替抽象这一概念 – 析取。
找出共性谓之析,将共性放到自己想放的地方谓之取。
而想要有共性,就必须是一个宽泛的概念,起码包含两个及以上的人或物才能进行析出不是。所以析取一定是针对一个范围来进行的,单独的个体只是研究对象,而无法进行抽象。

多说一句。每个人的理解不一,我是借着谐音才对抽象有一个浅显的理解,和标准概念理解的抽象一定是存在偏差的。偏差不打紧,我自己咬动了面向对象这一概念。所以我也希望每位读者都能对面向对象有着自己的理解。
读到这里,如果你是第一次接触面向对象的思想,请先尝试抽象某些事物再继续向下读。

我们前面提到了,对一个范围内的事务进行析取,然后将析取出来的内容放到自己想要存放的地方。这个存放的地方我们称之为 类。
在C++语言中,类使用 class 关键字进行声明。
class class_name { ... },其中大括号表示类的范围,在这个范围(大括号)之内就是类的成员

对于一个类,我们需要理解三个概念:类的声明、类的成员 和 类的对象。类的声明无需赘述,我们来看里的成员和类的对象。

类的成员

所谓之类的成员,就是我们析取出来的内容。大多数语言在面向对象时会将对象分为 成员属性 和 成员方法。
成员属性(属性)指的是那些不具有连贯性的析取,比如 楼:高度、楼层;再比如 人:年龄,工作。
成员方法(方法/行为)指的就是那些具有连贯性的动作了。比如 楼:盖楼,人:吃饭。
看到 楼:盖楼,请不要惊讶。我要是换一个写法 楼:被建造,大家就都能理解了。这也恰恰说明了抽象的重要性。好的抽象真的能帮助所有使用这个类的人(包括作者自己)省下很大的功夫。也请留意像 人:工作,这样的抽象。工作既可以是一个名词表工种,也可以是一个动词表工作内容。
其实不难看出 成员属性 叫做 成员变量,成员方法 称为 成员函数 更为贴切。
此外,C++还为每一个 成员方法 内置了一个 this 指针。

this 指针

关于 this 指针有一段话很形象的描述了其实质。

当你进入一个房子后,   
你可以看见桌子、椅子、地板等,   
但是房子你是看不到全貌了。   
对于一个类的实例来说,   
你可以看到它的成员函数、成员变量,   
但是实例本身呢?   
this是一个指针,它时时刻刻指向你这个实例本身

this指针的具体细节我们不关注,关注一下几点就可以了。

  • 所有的成员方法(包括无参构造),其第一个参数都是一个指向本类的指针,this指针。
  • this指针指向本类,可以通过this指针来访问本类的成员。但是 this 指针不能访问非本类成员,如静态成员(静态属性、静态方法都不行)
  • this指针是成员方法的第一个参数,是隐藏的,无需被再次声明(因为不想过多关注 this,我一直使用这句话,尽管它有很大的缺陷)。

类的对象

类是抽象,那么对象就是具体。这恰好对应前边范围和个体的说话。类是对一个范围进行析取,而对象就是深入每个个体来研究。
针对于范围我们看他们有什么特性,但对于个体的研究却大不相同。往往我们关注的是这个个体他的具体属性是什么,以及在某个时刻他对一件事是如何处理的(年龄:甲20岁,乙30岁;在一个坑边,甲跳过去,乙绕过去,丙无所无惧直接走上去再次跌倒)。
程序研究的往往是某一个特定的类型,但世间万千大道殊途同归,对于人能研究那一定能研究其他的类型。比如,计时器:100s,当计时结束时再次打开该计时器。

  • 对象的构造语法:class_name object
    对象的构造语法也说明了,类是一种数据类型,我们将其称之为类类型。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fstarSea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值