C# 学习笔记-面向对象基础语法

面向对象的概念

  • 面向过程:面向的是完成这件事的过程,强调的是完成这件事的动作;
    把大象塞进冰箱里:
    1、打开冰箱;
    2、把大象塞进去;
    3、关闭冰箱门。

    如果我们用面向过程的思想来解决这件事儿,当执行这件事的人不同的时候,我们需要为每个不同的人量身定做解决事情的方法。

  • 面向对象:找个对象帮你做事儿?
    面向对象的好处是可以写出比较通用的代码。

  • 面向过程与面向对象的区别
    来自知乎:https://www.zhihu.com/question/28790424/answer/42102986
    面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题的事物分解成多个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
    以五子棋为例,面向过程的设计思路就是首先分析问题的步骤:
    1、开始游戏;
    2、黑子先走;
    3、绘制画面;
    4、判断输赢;
    5、轮到白子;
    6、绘制画面;
    7、判断输赢;
    8、返回步骤2,9;
    9、输出最后结果。
    把上面每个步骤写成一个函数,问题就解决了。

而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为:
1、黑白双方,这两方的行为是一模一样的
2、棋盘系统,负责绘制画面;
3、规则系统,负责判定诸如犯规、输赢等;

第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

  • 静态与非静态的区别
    1、在非静态类中,既可以有实例成员,也可以有静态成员
    2、在调用实例成员的时候,需要使用对象名.实例成员
    在调用静态成员的时候,需要使用类名.静态成员名
    总结:静态成员必须使用类名去调用,而实例成员使用对象名调用。
    静态成员只能访问静态成员,不允许访问实例成员。
    实例函数中,既可以使用静态成员,也可以使用实例成员。

使用:
1) 如果想要类当做一个“工具类”去使用,这个时候可以考虑将类写成静态类。//避免创建对象。
2) 静态类在整个项目中资源共享。//

  • 静态存储区

    释放资源。GC Garbage Collection 垃圾回收器。
    选中属性,Ctrl+R,E可以自动生成属性的代码。

    这里写图片描述

  • 构造函数
    作用:帮助我们初始化对象
    是一个特殊的方法:
    1)构造函数没有返回值,连void也不能写,而且必须是public访问修饰符
    2)构造函数的名称必须与类名一样
    3)在创建对象的时候调用这个方法
    new 关键字:
    1)在内存中开辟了一块空间
    2)在开辟的空间中创建对象
    3)调用构造函数
    构造函数可以重载

  • this关键字
    1)代表当前类的对象
    2)在类当中显式的调用本类的构造函数//重载构造函数时,避免冗余代码

 //构造函数,字段,属性,方法
        public Student(string name,int age,char gender,int chinese,int math,int english)
        {
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
            this.Chinese = chinese;
            this.Math = math;
            this.English = english;
        }

        public Student(string name,int chinese,int math,int english):this(name,0,'c',chinese,math,english)
        {

        }
  • 析构函数
    ~Student():~加类名
    当程序结束的时候,析构函数才执行,帮助我们释放资源。
    与GC的区别是析构函数释放资源的速度比较快。

猜你喜欢

转载自blog.csdn.net/lonesome_zxq/article/details/81201846