作用
更换体现面向对象语言中封装、继承、多态的特性。使用class关键字定义类
语法形式
类的访问修饰符 修饰符 类名
{
类的成员
}
- 访问修饰符:用于设定对类的访问限制,包括Public、Internal和不写。Public:可以在任何项目中访问类。Internal或不写:能在当前项目中访问类
- 修饰符:修饰符是对类本身特点的描述,包括 abstract、sealed 和 static。abstract 是抽象的意思,使用它修饰符的类不能被实例化;sealed 修饰的类是密封类,不能 被继承;static 修饰的类是静态类,不能被实例化。
- 类名:类名用于描述类的功能,因此在定义类名时最好是具有实际意义,这样方便用户理解类中描述的内容。在同一个命名空间下类名必须是唯一的。
- 类的成员:在类中能定义的元素,主要包括字段、属性、方法。
类成员
- 访问修饰符。4个,包括public(成员可以被任何代码访问)、private(成员仅能被同一个类中的代码访问,如果在类成员前未使用任何访问修饰 符,则默认为private)、Internal(成员仅能被同一个项目中的代码访问)、protected(成员只能由类或派生类中的代码访问。派生类是在继承中涉及的)。
字段
语法规则
访问修饰符 修饰符 数据类型 字段名;
- 字段的定义与前面介绍的变量和常量的定义类似,只是在变量或常量前面可以加上访问修饰符、修饰符
- 修饰字段时通常用两个修饰符,即readonly (只读)和static (静态的)。 readonly:只能读取该字段的值而不能给字段赋值。 static 修饰的字段是静态字段,可以直接通过类名访问该字段。
- 常量不能使用 static 修饰符修饰
namespace code1
{
class Test
{
private int id;//定义私有的整型字段 id
public readonly string name;//定义公有的只读字符串类型字段name
internal static int age;//定义内部的静态的整型字段age
private const string major = "计算机";//定义私有的字符串类型常量major
}
}
不同类型的字段在类中定义的默认值如下:
数据类型 | 默认值 | 数据类型 | 默认值 |
---|---|---|---|
整数类型 | 0 | 字符串 | a |
浮点型 | 0 | 布尔型 | False |
字符串类型 | 空值 | 其他引用类型 | 空值 |
字段访问
使用get和set访问器进行字段数值的获取和设置。
public 数据类型 属性名
{
get
{
获取属性的语句块;
return 值;
}
set
{
设置属性得到语句块;
}
}
-
get访问器用于获取属性的值,需要在get语句最后使用return关键字返回一个与属性数据类型相兼容的值。若在属性定义中省略了该访问器,则不能在其他类中获取私有类型的字段值,因此称为只读属性
-
set访问器用于设置字段的值,需要使用特殊的值value,value是给字段赋的值。在set访问器省略后无法给其他类中给字段赋值,因此也称为只读属性。
namespace code2 { 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{ if(value >=0) { price = value; } else { price = 0; } } } } }
方法
将同一功能的内容放在一起
语法规则
访问修饰符 修饰符 返回值类型 方法名(参数列表)
{
语句块:
}
-
访问修饰符。所有类成员访问修饰符都可以使用,如果省略,默认是private。
-
修饰符。在定义方法时修饰符包括virtual(虚拟的)、abstract(抽象的)、override(重写的)、static(静态的)、sealed(密封的)。override是在类之间继承时使用。
-
返回值类型。调用方法后得到返回结果,返回值可以是任意的数据类型。如果指定返回值类型,必须使用return关键字返回一个与之匹配的值,如果没有指定返回值,必须使用void关键字表示没有返回值。
-
方法名.对方法所实现功能的描述,方法名的命名是以Pascal命名法为规范的。
-
参数列表。在方法中允许有0到多个参数,如果没有指定参数也要保留参数列表的小括号,参数的定义形式是“数据类型参数名”,如果使用多个参数,可用逗号隔开。
namespace code2
{
class Test
{
private int id; //定义私有的整型字段 id
public readonly string name; //定义公有的只读字符串类型字段 name
internal static int age; //定义内部的静态的整型字段 age
private const string major = "计算机"; //定义私有的字符串类型常量 major
private void PrintMsg()
{
Console.WriteLine("编号:" + id);
Console.WriteLine("姓名:" + name);
Console.WriteLine("年龄:" + age);
Console.WriteLine("专业:" + major);
}
private string Msg(string words)
{
Console.WriteLine("你刚输入的文字为:" + words);
}
}
}