结构和类
结构
1.结构是一种值的类型,通常用来封装一组相关变量,结构中可以包括构造函数、常量、字段、方法、属性、运算符、事件和嵌套类型等。当如果要同时包括上述几种成员,则应该考虑使用类。
结构修饰符 struct 结构名
{
}
结构具有以下特点:
a).结构是值的类型;
b).向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的;
c).结构实例化可以不使用new运算符;
d).结构可以声明构造函数,但它们必须带参数;
e).一个结构不能从另一个结构或类继承。所有结构都直接继承自System.ValueType,后者继承自System.Object;
f).结构可以实现接口;
g).在结构中初始化实例字段是错误的;
2.结构的使用
结构常用于较小的数据类型。
public struct Rect
{
public double width;
public double height;
public rect(double x,double y)
{
width = x;
height = y;
}
public double Area()
{
return width * height;
}
}
Static void main(string[] args)
{
Rect rect = new Rect(6, 4);
Console.WriteLine(“矩形面积为:” + rect.Area());
}
类
1.类是一种数据结构,它可以包含数据成员(常量和域)、函数成员(方法、属性、索引器、运算符、构造函数和析构函数)和嵌套类型。类支持继承,继承是一种使子类(派生类)可以对基类进行拓展和专有化的机制。
面向对象编程方式具有封装、继承和多态性等特点。
2.类的声明
类修饰符 class 类名
{
}
常用类修饰符:
a).new:仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的、与基类中同名的成员。
b).public:不限制对该类的访问。
c).protected:只能从其所在类和所在类的子类(派生类)进行访问。
d).internal:只有.NET中的应用程序或库才能访问。
e).private:只有其所在类才能访问。
f).abstract:抽象类,不允许建立类的实例。
e).sealed:密封类,不允许被继承。
3.构造函数和析构函数
主要用来对对象进行初始化和回收对象资源。一般来说,对象的声明周期从构造函数开始,以析构函数结束。构造函数的名字和类的名字相同,析构函数和构造函数名字相同,但析构函数要在名字前加一个波浪号(~)。当退出含有该对象的成员时,析构函数将自动释放这个对象所占有的内存空间。
注:一个类中只能有一个析构函数,并且无法调用析构函数,它是自动调用的。
4.对象的声明和实例化
class A
{
}
class B
{
static void Main(string[] args)
{
A a = new A();
}
}
类的面向对象特性
1.类的封装
封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口这一特定的访问权限来使用类的成员。
2.类的继承
C#中一次只允许继承一个类,不能同时继承多个类。
利用继承机制,用户可以通过增加、修改或替换类中的方法对这个类进行扩充,以适应不同的应用要求。
继承类时,需要使用冒号加类型。当对一个类应用sealed修饰符时,该修饰符会阻止其他类从该类继承。
3.类的多态
多态使子类(派生类)的实例可以直接赋予基类的变量(这里不需要强制类型转换),然后直接就可以通过这个变量调用子类(派生类)的方法。
注:
a).virtual修饰符不能与private、static、abstract或者override修饰符同时使用。
b).override修饰符不能与new、static或者virtual修饰符同时使用,并且重写方法只能用于重写基类的虚方法。
c).C#中,继承、虚方法与重写方法组合在一起才能实现多态性。
《C#从入门到精通》读后总结