zoukankan      html  css  js  c++  java
  • 类和对象详细介绍

    1.1、类和对象基本概念
    1.2、什么是对象?
    1.3、什么是类?
    2.1、类的声明
    2.2、实例化对象
    3.1、类的属性定义--数据成员
    3.2、类的数据成员的特例-静态数据成员
    4.0、类的方法--成员函数
    4.1、类方法的定义
    4.2、静态成员函数
    4.3、成员函数的类别(const 的另一种用法)
    5.0、特殊成员函数-构造函数 和 析构函数
    5.1、构造函数的概念
    5.2、构造函数的 声明 和 定义
    5.3、构造函数的调用(带参数)
    5.4、构造函数调用(不带参数)
    5.5、构造函数声明(带有默认参数)
    5.6、构造函数的重载
    5.7、特殊构造函数--拷贝构造函数
    5.8、析构函数
    5.9、类和函数的联系
    5.10、this指针

    1.1、类和对象基本概念

    (1)类和对象是面向对象程序设计中最基础,最重要的两个概念。

    (2)在面向对象程序设计中,所有操作都是以对象为基础的。

    (3)程序中的对象 是对 现实对象的抽象。

    1.2、什么是对象

    现实对象包括可感知的物体,以及思维中的概念;

    例如:

    汽车客运被看做是一个对象;学校作为一个概念也可以看成一个对象;

    现实对象

    有个特点:属性 和 行为的整体

    示例:

    一辆汽车具有车型、颜色 -》属性

    并有启动,转向、刹车等-》行为

    程序对象:

    属性可以看做为数据;行为可以抽象为函数。

    对象是:数据 和 函数 的集合。

    对象是:一个完整的个体。

    例如:

    所有汽车都具有车型,颜色等属性,所有属性的个数相同,所有汽车都具有启动、转向、刹车等行为。


    1.3、什么是类?

    类:

    类是指整个一类实物,一个类定义了一个模板;

    类对 数据 以及 处理数据的方式(函数)进行封装;

    汽车类:包括(汽车对象1、汽车对象2、汽车对象3)

    类 -具体实例-》对象

    类《-抽象----对象

    类(class):

    是将一组对象的 数据结构 和 操作相同的部分 抽出来 组成的集合,是 对象 的 共同特征 。

    2.1、类的声明:

    关键字class声明

    class:只定义一种数据类型,并不分配内存单元;

    成员访问指示符:

    (1)public:

    (公用成员,包括类的 属性 和 方法);

    提供类的外部界面,它允许类的使用者来访问它。

    (2)private:

    (私有成员,包括类的属性和方法);

    只能被该类成员函数访问,即只有类的本身能够访问它,任何类以外的函数对私有成员访问都是非法的。

    (3)protected:

    对于派生类来说,保护成员像是公有成员,可以任意访问。

    但对于程序的其他部分来说,就像是私有成员不应许访问。

    (4)类中的成员默认是私有的。

    2.2、实例化对象

    类是抽象的,不能赋值,但是 实例化的类 即 对象 能够赋值了,而且可以通过对象直接调用函数。

    3.1、类的属性定义--数据成员

    3.2、类的数据成员的特例-静态数据成员

    static修饰;

    在定义类对象时,不会为每个类对象复制一份静态数据成员,而是让所有类对象都共享一个静态数据成员。[无论new多少个,公共使用一个]

    如:

    class Student

    {

    static int counter;//用于记录学生人数

    int id;

    };

    静态变量在定义时要进行初始化,虽然大多少编译器对静态变量会赋默认值,但还是应该自己进行初始化。

    4.0、类的方法--成员函数

    详讲解:一般定义方法,特殊的成员函数(构造函数 和 析构函数)

    4.1、类方法的定义

    又称类的成员函数,成员函数主要处理类的数据成员;

    下面是 类体中的声明和定义 和类体外声明和定义

    加载中...

    4.2、静态成员函数

    static修饰,在类的各个实例化间是共享的。(和静态属性定义意思差不多)

    4.3、成员函数的类别(const 的另一种用法)

    const放在 函数的参数列表 和 函数体之间。

    const成员函数只能读类数据成员,而不能修改类成员数据。

    5.0、特殊成员函数-构造函数 和 析构函数

    定义类后,经常需要一一为 对象的 成员变量指定 初始值;

    虚构函数 用于定义了 类的 对象数组 后进行 初始化。

    5.1、构造函数的概念

    类 包含 数据成员 和 成员函数;

    一个类可以创建多个对象,创建对象后,需要为每个对象的数据成员赋初值。

    但一一为多个数据成员赋初值是非常烦琐的;

    并且在类中声明的数据成员,是不给数据成员赋初值的。

    错误例子:

    class A

    {

    int a=0;//错误,此处不能给数据成员a赋值

    };

    所以c++通常使用 构造函数 来解决 这个问题。

    构造函数 的 定义 和 主要功能:

    构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。

    在下面的示例中,定义了一个具有一个简单的构造函数,名为 Taxi 的类。然后使用 new 运算符来实例化该类。在为新对象分配内存之后,new 运算符立即调用 Taxi 构造函数。

    public class Taxi
    {
    public bool isInitialized;
    public Taxi() //构造函数 与类同名,可重载
    {
    //在类被实例化的时候自动调用 一般用于初始化 类的一些属性
    isInitialized = true;
    }
    }

    class TestTaxi
    {
    static void Main()
    {
    Taxi t = new Taxi(); //这时会自动运行Taxi类的构造函数Taxi()
    System.Console.WriteLine(t.isInitialized);
    }
    }

    不带参数的构造函数称为“默认构造函数”。无论何时,只要使用 new 运算符实例化对象,并且不为 new 提供任何参数,就会调用默认构造函数。

    构造函数性质:

    (1)构造函数的名字必须与类同名;
    (2)构造函数没有返回类型,它可以带参数,也可以不带参数;
    (3)声明类对象时,系统自动调用构造函数,构造函数不能被显式调用;
    (4)构造函数可以重载,从而提供初始化类对象的不同方法;
    (5)若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空.
    (6)静态构造函数,用static修饰,用于初始化静态变量,一个类只允许有一个构造函数,在类实
    例化时加载,这时修饰符public、private失去作用.
    (7)可以使用public、protected、private修饰符。.
    (8)引用父类构造时用():base()方法,引用自身重载的构造使用():this(int para).
    (7)可以使用public、protected、private修饰符。

    5.2、构造函数的 声明 和 定义

    实际应用中,一般都要给类声明和定义构造函数;

    如果没有声明和定义,编译系统会自动生成一个默认的构造函数,这个默认的构造函数不带任何参数,只能给对象开辟一个存储空间,而不能为对象中的数据成员赋初值,此时数据成员的值是随机的。程序运行时可能会出错。

    5.3、构造函数的调用(带参数)

    在定义了构造函数后就可以调用,一般来说,在定义对象的同时调用构造函数。

    注意:一般不需要显示调用,在声明对象时系统会自动调用构造函数。

    5.4、构造函数调用(不带参数)

    构造函数一般需要完成对类中私有数据成员的初始化,因此它需要包含参数完成对象的初始化。

    事实上,构造函数可以不带参数。

    5.5、构造函数声明(带有默认参数)

    5.6、构造函数的重载

    C++支持函数的重载,一个类中可以有多个不同参数形式构造函数。

    用类去创建一个对象,也就是在内存中产生一个类的实例时,程序将根据参数在动调用该类中的构造函数。

    增加了程序设计的灵活性。

    同一个类中不同构造函数的区别:参数个数,参数类型。

    注意:当定义带参数的构造函数时采用默认参数,在调用时若指定了参数值,则使用指定参数值。

    5.7、特殊构造函数--拷贝构造函数

    C++中除了普通的构造函数外,还有特殊构造函数--拷贝构造函数

    分类:

    1、用户自定义拷贝构造函数

    例子2:系统默认拷贝构造函数。

    当用一个已经存在的对象初始化本类的新对象时,如果没有自定义拷贝构造函数,系统会自动生成一个默认的拷贝构造函数来完成初始化的工作。

    5.8、析构函数

    与构造函数类似,析构函数也是一种特殊的成员函数。

    作用:释放分配给对象的内存空间,并做一些善后工作。

    例子:

    5.9、类和函数的联系

    (1)类对象可以作为函数参数,也可以作为函数返回值。

    (2)类对象作为函数参数传递时,可以值传递和引用传递。

    (3)类对象值传递时,实参中的成员变量目录中的变量被拷贝到形参中相应的成员变量。

    5.10、this指针

    是隐含在成员函数内的一种指针,称为本对象的指针。

    作用:

    (1)显示指明类中数据成员,尤其是和形参以及全局变量相区分。(当他们同名时)

    (2)返回本对象的指针和引用。

    在函数成员返回时:

    如果需要返回该对象的指针,使用”return this“;

    如果需要返回对象的引用时,使用”return *this“;

    (3)类对象值传递时,实参中的成员变量目录中的变量被拷贝到新参中相应的成员变量。

  • 相关阅读:
    python基础学习文件内容的操作
    python基础学习字符串操作
    python基础学习运算符
    python基础学习列表
    centos一键安装nginx
    centos6添加整段多IP脚本
    Ubuntu 添加整段多IP脚本
    安装python2.7
    两位float型的小数相加,不会变成两位小时的处理方法
    mysql 5.7 执行group by 语句报错
  • 原文地址:https://www.cnblogs.com/ciyan/p/4827461.html
Copyright © 2011-2022 走看看