C#视频—面向对象

类和对象

说到面向对象,怎么能不知道类和对象的区别呢?说实话,我以前一直没有理解“对象”的真正含义,不知道大家有没有对“对象”有误解。

 1.类:类是对一组具有相同属性的对象的抽象集合。类是不占内存的。
 2.对象:世间万物皆对象,对象是一个特指的,具体的,看得见摸得着的事物。对象是占内存的。
 举个栗子:电脑是一个类,而 XXX 的电脑才是一个对象;粉笔是一个类,而手里拿的这一根才是一个具体的对象。

类和结构体
结构体
类型 引用类型 值类型
内存分配 分配在内存的堆上 分配在内存的栈上
传递方式 引用传递 复制传递

类的组成

一个类中包括:字段、属性、方法。
1.字段:类似于类中声明的变量,如果它被声明为 public ,在类的外面既可以对它赋值,又可以取值。
2.属性:属性来自于字段,属性中有 get 和 set 方法,它可以对读写进行限制。
3.方法:也可以说是类的行为,为了完成具体的一项功能而封装起来的代码块。

★字段和属性的区别
 1.字段如果声明为 public ,那么外部既可以对它读,又可以对它写,毫无安全性而言。
 2.而属性就是为了保护字段而创造的,属性可以对读写操作进行限制,可以分为:读写、只读、只写。如果属性中 get 和 set 都有,那么就可以读写;如果只有 set ,那么就是只读;如果只有 get ,那么就是只写。
 我认为类的封装最好的体现就是这儿了。允许外部访问的变量一定要声明为属性。

//字段
private int _age;
//属性
public int Age
{
    set
    {
    //if (value >= 0 && value <= 150)
    //{
    //    _age = value;
    //}
    //else
    //{
    //    _age = 18;
    //}
    _age = value;
    }
    get
    {
        if (_age >= 0 && _age<=150)
        {
            return _age;
        }
        else
        {
            return 18;
        }
    }
}

★访问修饰符

访问修饰符 访问限制
public 完全公开,没有访问限制
private 私有成员,只有在类的内部才可以访问。字段的默认修饰符
protected 保护成员,该类的内部和和继承类中可以访问
internal 当前程序集可以访问,类的默认修饰符为internal

构造函数

1.为什么要用构造函数?
 1)对属性的赋值方便,不用再重复的书写对象名了
 2)让属性变为只读的,安全
 3)如果我们有的属性不允许用户随意改动,那么我们一般把这个属性定义为只读类型,声明为只读类型就不能在对象实例化后对它进行赋值了,这个时候就可以用到构造函数对它进行初始化了。

2.语法

public Person(string name,char gender,int age)
{
    this._name = name;  
    this._gender = gender;
    this._age = age;
}

3.注意
1)定义一个类时,如果没有声明构造函数,那么它就有一个默认的无参构造函数
2)一旦我们写了构造函数,那么类中的默认的无参构造函数就消失了
3)如果我们还想要无参构造,那么就要自己重新写一个无参构造函数,我们可以写多个构造函数,这叫做重载

析构函数

~Person()
{
    Console.WriteLine("在程序运行完由程序自动调用");
}

注意:1.不能在结构中定义析构函数,只能对类使用析构函数。
   2.一个类只能有一个析构函数
   3.无法重载和继承析构函数
   4.无法调用析构函数,他是在程序执行完自动被调用的
   5.析构函数既没有修饰符,也没有参数

怎么使用别的命名空间的类

1.先引用别的命名空间
2.①然后再 using ,然后直接使用类名就可以

using _04构造方法练习;

namespace _05命名空间
{
    class Program
    {
        static void Main(string[] args)
        {            
            Person per = new Person("小兰", '女');
            per.Say();
            Console.ReadKey();
        }
    }
}

 ②写全称:命名空间.类名

namespace _05命名空间
{
    class Program
    {
        static void Main(string[] args)
        {
            _04构造方法练习.Person per = new _04构造方法练习.Person("小兰", '女');            
            per.Say();
            Console.ReadKey();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/zwj_jyzl/article/details/80463808
今日推荐