C#笔记2

来源:互联网 发布:人工智能机器人 编辑:程序博客网 时间:2024/06/09 17:02

C#的类
(1)字段:在类内定义的变量成员成为字段。
静态字段static:用修饰符static声明的字段称为静态字段,它属于类而不属于某个对象。
实例字段:未使用static修饰的字段。
只读字段:使用readonly修饰的字段,只能在字段声明或构造函数中重新赋值,在其他任何地方都不能改变只读字段的值。
常量:使用const修饰的字段,只能在声明中初始化,以后不能再修改。
(2)创建对象
<对象名>=new <构造方法名>([参数列表]);
如为Car类创建一个对象:

Car myCar=new Car();

(3)this指针
当每个对象呗调用时,this便引用该对象(即引用该对象的地址)。
两种基本的用法:1)访问当前类成员;2)在声明构造函数时指定需要先执行的构造函数。
this用于构造函数:其中this表示该类本身所声明的、形式参数表和实际参数表最匹配的另一个实例构造函数,这个构造函数会在执行正在声明的构造函数之前执行。

<访问修饰符> 类名(形式参数):this(实际参数表){     ........//语句块;}

(4)属性
访问器get和set

get{   return 要访问的成员;}set{   要设置值的成员=value;}

如:

public class Date{   private int month;   public int Month   {      get{return month;}      set      {          if(value>0&&value<=12)          month=value;       }   }}

继承与多态
(1)继承,C#中类的继承只支持单一继承,不支持多重继承。
派生类构造函数自动调用基类不带参数的构造函数;
(2)隐藏基类成员:1)使用密封类(sealed)可以防止对类的继承。

sealed class A{   .....}public class B:A    //错误,类A是密封类,不能被继承{....}

在重写基类中的虚方法或许属性上使用sealed修饰符,这样可以防止派生类重写基类的特定虚方法或虚属性。

class A{    public virtual void F(){.....}    public virtual void G(){.....}}class B:A{    sealed override public void F(){....}     //F()是密封方法    override public void G(){.....}}class C:A{    override public void G(){.....}}

2)使用new修饰符可以显式隐藏从基类继承的成员。

public class Father{    public int x;    public int y;}public class Son:Father{    new public static int x=100;   //利用new隐藏基类的x    ....}

(3)多态性:同一操作作用域不同的类实例,将进行不同的解释,最后产生不同的执行结果。
虚方法用virtual修饰符的方法。虚方法可以由派生类方法取代,它的执行方式可以被派生类改变,取代所继承的虚方法实现的过程称为重写(override)该方法。
如:

class Father{   public virtual string method()    {      return "virtual Method";     }}class Son:Father{   public override string method    {       return "override method";    }}

抽象类和接口
(1)抽象方法,声明一个方法时,在前面加上abstract。除非派生类依然是抽象类,否则抽象类的派生类必须提供抽象方法的实现代码。抽象类不能实例化,但是可以引用子类对象;抽象类不能同时是 密封类

abstract class Animal   //抽象基类{   public abstract void Method();   //抽象方法}class Dog:Animal{    public override void Method()     {    .......//实现抽象方法    }}

(2)接口,是一种引用数据类型,使用interface关键字声明。接口的名称通常以“I”开头。

属性  接口修饰符  interface 接口名:基接口{     ......//接口成员} 

如:

public interface IImage{    int DeleteImage();   void DisplayImage();}

接口继承:派生接口继承了基接口中的函数成员说明,而没有继承富接口的实现;接口继承允许多重继承,一个派生接口可以由多个基接口。
接口实现:接口声明只包含成员的定义,而没有实现代码。接口中的成员都必须在其派生类中实现。
如果一个派生类既继承自基类又实现接口,那么在声明派生类的基类列表中,要先写基类再写接口,否则会出现编译错误。

0 0
原创粉丝点击