Bootstrap

【全栈计划 —— 编程语言之C#】将类玩明白,把对象把持住

前言

在这里插入图片描述
现在比较大众的说法是:面向对象是指在编程时将任何事物都看成是一个对象来描述。同时,面向对象增强了代码的重用性

我觉得听了有个概念就好,现在阶段,理解它们对咱们写代码的帮助也不大~

下面对象包括的内容就需要注意

对象包括属性和方法, 属性是指对象固有的特征,方法则是对象的行为。

例如将手机看作是一个对象。
手机的大小、颜色、品牌都可以看作是一个特征 ====> 属性
而打电话、发短信、上网是手机的行为 ====> 方法

在这里插入图片描述

本篇文章思维导图

在这里插入图片描述

在这里插入图片描述

通过类能很好地体现面向对象语言中的三大特性——封装、继承、多态。

【一】、类的定义

类定义的语法如下:

类的访问修饰符 修饰符 类名
{
   
	类的成员
}
① 类的访问修饰符 —— 用于设定对类的访问限制

类的访问修饰符有2个
1)public : 可以在任何项目中访问改该类
2)internal/不写:只能在当前项目中访问该类
在这里插入图片描述

② 修饰符 —— 对类本身特点的描述

包括 abstract、sealed 和 static
在这里插入图片描述

③ 类名

类名和常规的取变量名类似,一般在取名的时候,最好能表现出该类的功能。在同一个命名空间下,类名必须是唯一的。

④ 类成员 —— 在类中能定义的元素

主要包括字段、属性、方法

在这里插入图片描述

【二】、类的成员

类中的成员包括字段属性方法。每个类成员在定义时需要指定访问修饰符、修饰符。

通用——访问修饰符

类中成员的访问修饰符有 4 个

1)public —— 成员可以被任何代码访问
2)private —— 成员仅能被同一个类中的代码访问

如果在类成员前没有使用任何修饰符,就默认为private

3)internal —— 成员仅能别同一个项目中的代码访问
4)protected—— 成员只能由类或者派生类中的代码访问

派生类是在继承中涉及

类的成员 —— 字段 and 属性

字段的定义与变量和常量的定义类似,只是在变量或常量前面可以加上访问修饰符、修饰符。

定义字段的语法形式如下:

访问修饰符 修饰符 数据类型 字段名;
字段的修饰符
修饰字段时通常用两个修饰符,即 readonly (只读)和static (静态的)

1)readonly —— 只能读取该字段的值而不能给字段赋值
在这里插入图片描述

2)static —— 静态字段,可以直接通过类名访问

注意常量不能使用static修饰符 修饰

get访问器 和 set访问器

属性经常与字段连用,并提供了 get 访问器和 set 访问器,分别用于获取或设置字段的值。

知识普及一:
get访问器和set访问器的使用与方法的使用其实蛮类似的,可以在操作字段的时候,根据一些规则和条件来设置获取字段的值。

知识普及二:
可以选择性去除get访问器或者set访问器。

1)get{}
get访问器,用于设置获取属性的值,在最后需要使用return 返回一个与该属性数据类型想兼容的值。

若在属性定义中忽略了该访问器,则不能在其他类中获取私有类型的字段值,所以有时候也称为只写属性

2)set{}
set访问器用于设置字段的值,这里需要使用一个特殊的值value,把它用来为字段赋值。

在set访问器省略后,无法在其他类中给该字段赋值,所以也称为只读属性。


① 属性设置:
语法:

public    数据类型    属性名
{
   
    get
    {
   
        获取属性的语句块;
        return;
    }
    set
    {
   
        设置属性得到语句块;
    }
}

Tips: 由于属性都是针对某个字段赋值,因此属性的名称通常是将字段中每个单词的首字母大写。例如定义了一个名为 name 的字段,属性名则为 Name。


【随堂演练】定义一个图书信息类(Book),在类中定义图书编号(id)、图书名称(name)、图书价格(price)3 个字段,并分别为这 3 个字段设置属性,其中将图书名称设置为只读属性。

参考代码

using System;

namespace OOPDemo_1
{
   
    class Book
    {
   
        private int id;
        private string name;
        private double price;
        //设置图书编号属性
        public int Id
        {
   
            get
            {
   
                return id;
            }
            set
            {
   
                id = value;
            }
        }
        //设置图书名称属性
        //根据要求,将图书的书名设置为只读属性
        public string Name
        {
   
            get
            {
   
                return name;
            }
        }
        //设置图书价格属性
        public double Price
        {
   
            get
            {
   
                return price;
            }
            set
            {
   
                price = value;
            }
        }
    }
}

② 自动属性设置
定义语法:

public    数据类型    属性名{
   get;set;}

参考代码

public int Id{
   get; set;}
public string Name{
   get; set;}
public double Price{
   
;