.Net学习 第2季01 C#面向对象 基础

邮差的信 提交于 2020-04-07 02:00:06

.Net 视频学习第2季 C#面向对象

 

面向对象 基础

类是一个模板,不占内存,对象是根据模板生成的具象,占内存。

字段field:数据  方法method:函数  属性property:保护字段,对字段的赋值进行限定(将这部分封装在类中,外界不用理会如何实现)属性的本质就是两个方法 get() / set() 

外部(甚至类内部的方法)通过属性对字段进行赋值/读取,get()/set()内部会进行限定,字段永远用private,属性才是public的。

namespace Proj
{
    class Person
    {
        private int _age;
        public int Age
        {      get { return _age; }
          set
          {
              if (value < 0)
              {
                  value  = 0;
              } 
              _age = value;       
          }    
        }
    }
}    

不写字段,只写属性是可以的,编译器会自动生成与属性对应的字段。写好字段后按ctrl+R+E可以生成对应属性。

创建类的对象(实例化)的关键字 new

 

非静态=实例,非静态类可以有静态成员,也可以有非静态成员,静态成员用类名调用(例如Console.WriteLine();),非静态成员用类的对象来调用。静态类只能有静态成员。注意成员包括字段、属性和方法。

所以对于一个静态的字段/属性,在非静态方法中用this也是访问不到的,但是是可以访问的(用类名来调用)。反过来,静态方法中是不能使用非静态成员的。

静态类中只允许静态成员,不可以实例化。

静态类在整个项目中是资源共享的,在内存中是独立于堆和栈的。

 

关于构造函数,和C++差异不大,有默认构造函数(无参),自己写了构造函数之后,默认的就不再存在,构造函数可以重载,没有返回值(连void都没有),构造函数的名字与类名一样,必须是public的。

 

(非静态)方法中指向(调用该方法的)对象的关键字 this

另外构造方法调用全参的构造函数也用到this

public Student(string name, int age, char gender, int chinese, int math)
{
    this.Name = name;
    this.Age = age;
    this.Genger = gender;
    this.Chinese = chinese;
    this.Math = math;      
}

public Student(string name, char gender, int math):this(name,0,gender,0,math)
{}

当调用第二个构造方法时,实际上调用了第一个(全参)的构造方法,没有赋值的参数用默认值传入全参构造方法中。(减少由于不同参数对应的构造方法造成的冗余代码)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!