一起学C#-类

抽象类
格式 abstract class class_name
注意
抽象类只可以作为其它类的基类,不可以直接被实例化,不可使用 new 操作符,抽象类如果含有抽象的变量或值,要么是 null 类型,要么包含了对非抽象类的实例引用。抽象类允许包含抽象成员,不可以同时又是密封的。
抽象类的派生类,如果没有包含对抽象类方法的实现,那么派生类也必须是抽象类。如果派生类对抽象类方法进行重载,并提供方法的具体实现,则该类可以是非抽象类。
abstract class a    

{

public abstract void f();

}

abstract class b:a/                 //必须是抽象类

{

             public void g();

}

abstract class c:b             //可以不是抽象类

{

             public override void f()

{

             Console.Write(“a”);

}

}
 
抽象方法
试例 public abstract void mothed_name()
注意
抽象方法只能在抽象类中声明,默认是虚方法(可用 override 重载),不提供具体实现代码,它的执行体中只有一个分号“;”(在圆号后面)不可以带主体,那怕只是 {} 也不行,
抽象方法重载的虚方法时,基类中虚方法的执行代码将被“拦截”如下例
class a    

{

             public virtual void f()

{

             Console.WriteLine(“a.f”);

}

}

abstract class b:a

{

             public abstract override void f();

}

class c:b

{

             public override void f()

{

             Console.WriteLine(“c.f”);

}

}
 
密封类
scaled 修饰符声明,不可以被继承,不可以是抽象类,在密封类实例中修饰符 virtual 无效
密封方法
密封方法必须对虚方法进行重载,所以 sealed 修饰符总是和 override 修饰符同时使用
属性的继承
规则 属性重载时,如果基类只有一个属性访问器,那么返璞归重载后的属性也只可以有一个,如果基类同时包含了 get set 属性访问器,那么重载的属性可以只有一个,也可以同时有两个。
属性重载声明中,属性的名称,类型,访问修饰符都应该与被继承的属性一致。
注意:与方法重载不同的是,属性的重载声明实际上并没有声明新闻属性,而只是为已有的虚属性提供访问器的具体实现。
虚属性的访问器,包括 get 访问器与 set 访问器,同样也是虚的。
抽象属性的访问器也是虚的,而且不提供访问器的具体实现,必须在派生类中通过重载来提供对访问器的具体实现,抽象属性只可以在抽象类中申明
密封属性声明时必须与 override 修饰符同时使用,不可以在派生类中被继承。

你可能感兴趣的:(职场,休闲,学C#)