C#实战学习(五)——面向对象(类)

  大家还记得我们学习UML的时候的面向对象程序语言设计么?当时学了面向对象是如何的好,如何的棒,如何的呱呱叫,从面向对象的三大特征(多态性、封装性、继承性),一直说他是如何的好,给别人说他是多么的好,可是真的没有什么体会,最近学习了C#的一些方法,才知道确实不错。

   先回顾一下什么是我以前的总结吧!链接:面向对象与面向过程

一个思维导图:


1.面向对象,什么是对象?相同对象的集合又是什么?

对象:一个自包含的实体,用一组可识别的的特性和行为标识,是一个能够看得到、摸得着、特指的具体的实体。

对象:假如世界上就一个冯佳兴,我看的见,摸得着、我特指我自己,一个具体具体的帅小伙子。我身高180 ,体重、、、皮肤是黑色的,我正在学习C#语言。

我的名字叫冯佳兴、我有身高,这些都是我的一些特征属性、身高180cm,180是我的属性值,我的皮肤是黑色的,黑色也是我的属性值。我正在学习C#语言,这是我的行为,我正在做的事情

类:是模子是一个模板,确定将会拥有的的特征(属性)和行为(方法)。就是具有相同属性和功能对象的抽象集合。

 例如人类、全世界叫冯佳兴的人,提高班的全体成员。共享汽车,共享单车等。

类和对象的区别:对象是类的实例化,类是对象的类型,我们知道类是抽象的,使用时需要将其实例化,就是将类变成一个真实的对象。 

2.如何定义一个类:

[访问修饰符]  class 类名   //访问修饰符包括:Public private 、internal Protected等一般字段前面都是private
{
   成员(包括类的字段_name,_age、方法、属性(name, age)等)字段和属性的区别是字段多一个_
}

类的实例化:类只是个模板,用模板“造”出对象的过程就是实例化,实质上是分配内存空间,并且初始化数据。

关键字new   语法:  类 实例名 =new 类();

类成员的访问:实例名.属性    实例名.方法名();


3.构造方法:又叫构造函数,说白了就是对类的初始化。构造方法要与类同名,并且没有返回值,在new里面调用。

为什么初构造函数?

我们给初始化一个对象的时候,要对其进行赋值,如果一一对其进行赋值将会产生大量的代码,所以我们需要构造函数,这样可以随意改动对象的值,不需要在函数里面自己改动。

例子;

namespace 构造类函数
{
    public class Person
    {
        private string _name;//声明一个Person类的私有字符串字段_name
        private char _gender;//声明一个Person类的私有char类型的字段_name
        private int _age;//声明一个Person类的私有数值型字段_name
        public Person(string name,char gender,int age)//定义Person类构造方法,参数分别是输入一个字符串、一个性别、一个年龄
        {
            this._name = name;//this为指示代词,将该人的属性值分别赋值给字段
            this._gender = gender;
            this._age = age;
        }
        public void Show()//一种显示个人信息的方法
        {
            Console.WriteLine("我叫{0},性别{1},年龄{2}", _name, _gender, _age);
        }      
    }
}
namespace 构造类函数
{
     public class Program
    {
        static void Main(string[] args)
        {
            Person per = new Person("佳兴",'男',18);//声明一个名为per的对象、将其实例化、并给字段赋值
            per.Show();
            Console.ReadKey();
        }
    }
}

附注:写一个类,如果没有构造函数,系统会默认有一个空的构造函数,当你构造新的函数时,该函数将会被干掉。


3.1构造函数的重载

   为什么要进行重载?

   目的是创建同名的多个方法的能力,但是这些方法需要使用不同的参数类型(参数类型或个数必须要有所不同),其实就一个目的,就是在原方法的基础之上给他增加新功能。



4.namespace(命名空间)

 4.1为什么需要命名空间?

  用于解决类重名的问题,可以看做“类的文件夹”命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。

例子:个人理解:我们每个人都是不同的对象,所有的对象的类型定义都必须在某个命名空间下定义,所有的方法都必须包含类型定义中。例如冯佳兴某一个身体部位(手),叫我给他命名就叫冯佳兴的手,只能在我个人这个空间给他命名。再比如小明的手,虽说都是手,但是我们两个的手不一样。

  好比不同的文件夹下有两个相同的名字。我们不能说这两个名字相同。但是调用的时候,因为名字相同,为了便于区分,我们需要加上他们的文件夹。

  4.2通过命名空间是实现项目类的调用

    例如08项目想调用01项目的program.cs这个类。首先添加引用01面向对象项目




今天就先写下这么多吧,不知道博客的篇幅长还是短?希望大家提出建议,我将做好适当的调整和修改,方便大家浏览!

猜你喜欢

转载自blog.csdn.net/fjxcsdn/article/details/80026170