Poedu_C++_Lesson03_1_20161223_类与对象(1)

  • -

广义上的类和对象

举例说明:

三个名词:哺乳纲、人类、小明(一个人的名字)

当只有人类和小明这两个名词时,它们的关系是这样的:

小明属于人类。

人类是抽象出来的一个概念,是一个“虚”的东西,而小明这个人是确确实实存在的。小明是人类的一个具象的体现。小明身上有的(属性)、小明能够做的(方法),在“人类”这个类里都找得到。

当三个名词都有的时候,它们的关系是这样的:

小明属于人类,人类又属于哺乳纲

同样的,哺乳纲也是一个抽象出来的概念,哺乳纲是中不止“人类”这一个子类。所以,凡是人类中能够找到的属性与方法,在哺乳纲中都能找得到,人类中找不到的属性与方法,在哺乳纲中可能可以找到。而小明是人类的一个具象,同时也是哺乳纲的一个具象。

大概是这样的:
这里写图片描述

小结:

我认为,广义上的类与对象就是包含与被包含的关系。对象所拥有的属性与方法都是类中的一部分。而且,类所拥有的属性与方法一般会大于对象所拥有的属性与方法。

狭义上的类与对象(编程上的类与对象)

C++中,用一个class来代表一个类,方法用函数代替,属性用变量来代替。

在程序中,类与对象应该怎么写?

比如我们要写一个dog类,如果从广义上的对象来说,一只狗的属性很多:比如毛色、肩高、品种等等,那么我们在写程序的时候是否都要写上去呢?未必。

在程序中,当要写一个dog类时,我们没必要把全部的属性都写上去,而是要根据我们的需求来定:

比如,我们要写的dog类,它是一只宠物狗,那么我们要关注的属性就是品种、毛色、肩高等;如果它是一只肉够,那么毛色这个属性对我们就没啥用了,我们主要关注的属性应该就是重量、狗场的位置等。

这也是C++的第一种能力:抽象能力(抽象类)

第二种能力:组织能力(工具类)

将一系列相同的东西写到一个类里,这就成为了工具类,比如string类。

如:
Class MyString
{
  MyString();
  ~MyString();
private:
  //属性
  char *str;
  int len;
public:
  //方法
  int GetStrLen(char* str);
}

解析:
(1)C++中使用class定义一个类,后面跟的是类名;
(2)class中,有访问权限:
private 私有,在上述代码中的private以下,public之上的部分都属于私有部分(即以权限访问控制符private和public为界限),私有部分中的内容,只有在内部才能访问,在外部是无法被调用的。这就使得我们的变量变得更加的安全。
public 公有,上述代码中的方法以及最开始的两个函数(构造函数和析构函数)都是属于公有的,可以在外部(比如main函数中)进行调用。
protect

注意:类是虚的,不占用空间;对象是实的,会占用空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值