类和对象


类和对象

文章插图
类和对象类和对象(class)是两种以计算机为载体的计算机语言的合称 。对象是对客观事物的抽象,类是对对象的抽象 。类是一种抽象的数据类型 。
它们的关係是,对象是类的实例,类是对象的模板 。对象是通过new className产生的,用来调用类的方法;类的构造方法。
基本介绍中文名:类和对象
外文名:class
载体:计算机
举例:方法和变数的软体模板
分类:计算机语言
声明定义类对象的定义类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起 。对象是具有类类型的变数 。类和对象是面向对象编程技术中的最基本的概念 。类对象的关係类是对象的抽象,而对象是类的具体实例 。类是抽象的,不占用记忆体,而对象是具体的,占用存储空间 。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变数的软体模板 。类类型的声明class 类名{    public:    公用的数据和成员函式    protected:    保护的数据和成员函式    private:    私有的数据和成员函式}定义对象方法1.先声明类类型,然后再定义对象举例:Student stud1,stud2; //Student是已经声明的类类型2.在声明类类型的同时定义对象class Student//声明类类型{    public://先声明公用部分    void display()    {        cout<<″num:″<<num<<endl;        cout<<″name:″<<name<<endl;        cout<<″sex:″<<sex<<endl;    }    private://后声明私有部分    int num;    char name[20];    char sex;}stud1,stud2;//定义了两个Student类的对象//在定义Student类的同时,定义了两个Student类的对象 。3.不出现类名,直接定义对象 class//无类名{    private://声明以下部分为私有的    ┆    public://声明以下部分为公用的    ┆}stud1,stud2;//定义了两个无类名的类对象直接定义对象,在C++中是合法的、允许的,但却很少用,也不提倡用 。在实际的程式开发中,一般都採用上面3种方法中的第1种方法 。在小型程式中或所声明的类只用于本程式时,也可以用第2种方法 。在定义一个对象时,编译系统会为这个对象分配存储空间,以存放对象中的成员 。类结构体异同C++增加了class类型后,仍保留了结构体类型(struct ),而且把它的功能也扩展了 。C++允许用struct来定义一个类型 。如可以将前面用关键字class声明的类类型改为用关键字struct 。为了使结构体类型也具有封装的特徵,C++不是简单地继承C的结构体,而是使它也具有类的特点,以便于用于面向对象程式设计 。用struct声明的结构体类型实际上也就是类 。用struct声明的类,如果对其成员不作private或public的声明,系统将其默认为public 。如果想分别指定私有成员和公用成员,则套用private或public作显式声明 。而用class定义的类,如果不作private或public声明,系统将其成员默认为private,在需要时也可以自己用显式声明改变 。如果希望成员是公用的,使用struct比较方便,如果希望部分成员是私有的,宜用class 。建议儘量使用class来建立类,写出完全体现C++风格的程式 。成员函式成员函式性质类的成员函式(简称类函式)是函式的一种,它的用法和作用和第4章介绍过的函式基本上是一样的,它也有返回值和函式类型,它与一般函式的区别只是:它是属于一个类的成员,出现在类体中 。它可以被指定为private(私有的)、public (公用的)或protected(受保护的) 。在使用类函式时,要注意调用它的许可权(它能否被调用)以及它的作用域(函式能使用什幺範围中的数据和函式) 。例如私有的成员函式只能被本类中的其它成员函式所调用,而不能被类外调用 。成员函式可以访问本类中任何成员(包括私有的和公用的),可以引用在本作用域中有效的数据 。一般的做法是将需要被外界调用的成员函式指定为public,它们是类的对外接口 。但应注意,并非要求把所有成员函式都指定为public 。有的函式并不是準备为外界调用的,而是为本类中的成员函式所调用的,就应该将它们指定为private 。这种函式的作用是支持其它函式的操作,是类中其它成员的工具函式(utility function),类外用户不能调用这些私有的工具函式 。类的成员函式是类体中十分重要的部分 。如果一个类中不包含成员函式,就等同于C语言中的结构体了,体现不出类在面向对象程式设计中的作用 。类外定义函式classStudent{public:voiddisplay();//公用成员函式原型声明private:intnum;stringname;charsex;//以上3行是私有数据成员};voidStudent∷display()//在类外定义display类函式{cout<<″num:″<<num<<endl;//函式体cout<<″name:″<<name<<endl;cout<<″sex:″<<sex<<endl;}Studentstud1,stud2;//定义两个类对象