C#基础——(类和对象、构造函数、析够函数)

1、类和对象

① 类:类是一个模子,确定对象将会拥有的特征(属性)和行为(方法)。

类的三大特征:封装性、继承性、多态性。

类的定义:

[访问修饰符] class 类名

{

成员

}

其中的访问修饰符:

private:私有成员,在类的内部才可以访问

protected:保护成员,在类内部和继承类中可以访问

public:公共成员,完全公开,没有访问限制

internal:当前程序集内可以访问

类的实例化对象语法: 实例名=new 类()

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

类的属性:

属性的定义:get,set

属性是为了保护与之相对应的字段的,保证对字段的读取和复制符合要求

属性可以分为:读写、只读、只写。

允许外部访问的变量一定要声明为属性

 属性和public字段的区别是什么? 

属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设置负数,而字段则不能进行这样的设置。

调用set方法为一个属性设置值,然后用get方法读取出来的值一定是set进去的值吗?

虽然一般情况下get读取的值就是set设置的值,但是可以让get读取的值不是set设置的值的

② 对象:看得见,摸得着,具体的,特指的。是类的一个实例化

③ 类与对对象的关系如图所示:

④ 类的实例化例子:

//================================Person类里面的代码======================================
public class Person
{
    private string _name;//字段,访问修饰符private,那么这个字段就是私有的外边不能访问,
    //属性,通过属性,在外面或者其他地方进行访问
    public string Name
    {
        get { return _name; }//读,可以读set赋的值,也可以直接设置读的值
        set { _name = value; }//写
    }
    private int _age;
        
    public int Age
    {
        get
        {
            return _age;
            if (_age>=0 && _age<=150)//在读值的时候对年龄进行限制
            {
                return _age;
            }
            else
            {
                return 18;
            }       
        }
        set { _age = value; }//在写的时候也可以进行限制
    }
    public void SayHello()//person类里面的方法
    {
        Console.WriteLine("hello 大家好,我是人,年龄是{0}",_age);
    }
}
//====================================Program里面的代码======================================
static void Main(string[] args)
{
    Person per = new Person();//实例化这个类
    per.Name = "张三";//赋值
    per.Age = 19;
    per.SayHello();//调用person里面的方法
    Console.WriteLine(per.Age);//读值
    Console.ReadKey();     
}

2、构造函数

① 类的构造方法:用来创建对象,并且在构造函数中对对象进行初始化

② 构造函数:用来创建对象的特殊方法,方法名和类名相同,没有返回值,连void都不用

③ 构造函数的特点:

构造函数可以有参数,new对象的时候传递函数参数即可

如果类不指定构造函数,则有一个默认的无参数的构造函数

如果类指定了有参数的构造函数,则不再有默认的无参数的构造函数,如果需要无参数的构造函数,需要自己来写

构造参数可以重载,也就是有多个不同的构造函数

④ 使用构造方法可以解决的问题

在赋初值时,重复书写对象名

假如有一个属性,不允许用户改动,我们可以把这个属性定义为只读类型的属性,只读类型的属性不能实例化,可以使用构造方法来初始化

⑤ 构造函数的例子:构造函数的重载

//=======================================Person类的代码=========================================
class Person
{    
    public Person(string name, char gender, int age)//构造函数,有参数的
    {
        this._name = name;//this只是代词
        this._gender = gender;
        this._age = age;
    }
    public Person()//构造函数的重载,无参数的
    {
    }
    //下面是属性和方法
    private string _name;
    public string Name
    {
        get { return _name; }
    }
    private char _gender;
    public char Gender
    {
        get { return _gender; }
    }
    private int _age;
    public int Age
    {
        get { return _age; }
    }
    public void show()
    {
        Console.WriteLine("{0}岁的{1}在世界上", _age, _name, _gender);
    }
}
//========================================Program的代码=========================================
static void Main(string[] args)
{
    Person per = new Person("张三",'男',18);//使用有参数的构造函数
    per.show();//调用类的方法
    Console.ReadKey();
}

3、析够函数——在程序被执行时调用的

特点:

不能再结构中定义析够函数,只能对类使用析够函数

② 一个类只能有一个析够函数

③ 无法继承或重载析够函数

④ 无法调用析够函数,它们是自动被调用的

⑤ 析够函数既没有修饰符,也没有参数

例子:

//析够函数
~Person()
{
    Console.WriteLine("嘿嘿,我被调用了");
}

猜你喜欢

转载自blog.csdn.net/make_1998/article/details/88724736