文章目录
前言
现在比较大众的说法是:面向对象是指在编程时将任何事物都看成是一个对象来描述。同时,面向对象增强了代码的重用性
。
我觉得听了有个概念就好,现在阶段,理解它们对咱们写代码的帮助也不大~
对象包括属性和方法
, 属性是指对象固有的特征,方法则是对象的行为。
例如将手机看作是一个对象。
手机的大小、颜色、品牌都可以看作是一个特征 ====> 属性;
而打电话、发短信、上网是手机的行为 ====> 方法。
类
通过类能很好地体现面向对象语言中的三大特性——封装、继承、多态。
【一】、类的定义
类定义的语法如下:
类的访问修饰符 修饰符 类名
{
类的成员
}
类的访问修饰符有2个
1)public : 可以在任何项目中访问改该类
2)internal/不写:只能在当前项目中访问该类
包括 abstract、sealed 和 static
类名和常规的取变量名类似,一般在取名的时候,最好能表现出该类的功能。在同一个命名空间下,类名必须是唯一的。
主要包括字段、属性、方法
【二】、类的成员
类中的成员包括字段
、属性
、方法
。每个类成员在定义时需要指定访问修饰符、修饰符。
通用——访问修饰符
类中成员的访问修饰符有 4 个
1)public —— 成员可以被任何代码访问
2)private —— 成员仅能被同一个类中的代码访问
如果在类成员前没有使用任何修饰符,就默认为private
3)internal —— 成员仅能别同一个项目中的代码访问
4)protected—— 成员只能由类或者派生类中的代码访问
派生类是在继承中涉及
类的成员 —— 字段 and 属性
字段
的定义与变量和常量的定义类似,只是在变量或常量前面可以加上访问修饰符、修饰符。
定义字段
的语法形式如下:
访问修饰符 修饰符 数据类型 字段名;
字段的修饰符
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{