类:存储数据一种结构体,是面向对象编程的基础。
定义类的格式:[访问修饰符] [类的属性] 关键字(class) 类的名字(首写字母必须大写)如:public class DemoStudent{}
备注:类是创建对象的模板,只有有了类之后,才可以创建对象。
创建对象的格式:
类名 对象名字 = 关键字(new)类名([参数]);
创建对象的过程:通过调用类的实例(对象)构造函数,来创建对象。
构造函数可分为2类:类构造函数和实例构造函数。
类构造函数:负责在内存构建类,又称为静态构造函数,如果类在内存中不销毁的(也就是说没有被回收掉),只调用一次。
格式:静态(static) 类名(){//语句}
实例构造函数:类似一个方法,但是没有返回类型。每创建对象,就调用该函数。
具体格式:访问修饰符 类的名字([参数列表]){},一个类里面可以多个构造函数。
如果一类中没有显式定义一个构造函数,那么在编译的时候,编译器就会给该类创建一个没有参数并且访问修饰符是public的构造函数:public 类名(){},但是一旦给类定义了一个构造函数的话,哪么编译器就不会给该类添加任何的构造函数。
类中可以存放索引器、方法、属性、字段
三个主要的性质:封装性,继承性,多态性。
封装性:把类的实现细节隐藏起来,对其他类来说,只关心方法的调用,而不必关注具体的实现。System.Console.WriteLine(),对于这个方法来说,我们只知道调用该方法,就可以向控制台输出一句话,而方法的内部实现我们不必关心,这就是类的封装性。
由于类的封装性,不允许访问类的私有字段:定义属性,索引器都有3个类型,对于08来说,要会定义自动化属性。
定义属性的格式:
public 数据类型 属性名字
{
get//获得私有字段所保存的值
{
return //私有字段
}
set//给私有字段赋一个新的值
{
私有字段 = value;
}
}
备注:属性的数据类型必须和通过属性所封装的私有字段的数据类型完全一样。
对于属性来说可以分为3类:如果只有get我们把属性称之为只读属性;如果只有set我们把属性称之为只写属性;如果既有get又有set我们把属性称之为可读可写属性;
怎样访问类的属性:在其他类中,通过创建封装属性的类的实例(对象),通过该对象可以对属性的操作。这样可以实现对类私有字段的间接操作(一方面获取字段所保存的值,另一方面给私有字段赋一个新的值)例:
public class Student
{
private string name;
public string Name
{
get { Console.WriteLine("调用Get方法");
return name;
}
set
{
Console.WriteLine("调用Set方法");
name = value;
}
}
输出结果:
调用Set方法
调用Get方法
aa
}
class Program
{
static void Main(string[] args)
{
Student s = new Student();
s.Name = "aa";
Console.WriteLine(s.Name);
}
}
如果类中的属性是对象的,则应该在get中声明对象,因为访问此属性是从get开始访问的。
例:
private IList<LTEAResultBandWidth> resultBandWidth;
public IList<ResultBandWidth> ResultBandWidth
{
get
{
if (resultBandWidth == null)
{
resultBandWidth = new List<LTEAResultBandWidth>();
}
return resultBandWidth;
}
set { resultBandWidth = value; }
}