C#学习之抽象类和方法
2015-09-07 14:30
435 查看
坚持 成长 每日一篇
抽象方法有以下特征:
1.一个抽象方法可以看作是一个虚函数。
2.抽象方法的声明只能发生在抽象类中。
3.因为抽象方法声明只提供一个无实现的方式,没有方法体
4.方法体的实现被覆写方法提供,覆写方法是一个类的成员。
5.抽象属性的行为和抽象方法相像,除了不同的声明形式。
6.在一个静态属性中使用abstract 是一个错误(因为抽象方法不存在)。
*一个抽象属性能够通过派生类使用 override 实现.
抽象类具有以下特征:
1.抽象类不能被实例化。
2.抽象类可以包含抽象方法和访问器
3.不能把抽象类用密封(sealed)来修饰,那就意味着类不能被继承,这违反抽象类被继承的原则。
4.一个派生于一个抽象类的非抽象类必须包括所有的继承来的未实现的抽象方法和访问器的实现
5.在方法和属性中使用abstract 关键字意味着包含它们的实现。
抽象方法有以下特征:
1.一个抽象方法可以看作是一个虚函数。
2.抽象方法的声明只能发生在抽象类中。
3.因为抽象方法声明只提供一个无实现的方式,没有方法体
4.方法体的实现被覆写方法提供,覆写方法是一个类的成员。
5.抽象属性的行为和抽象方法相像,除了不同的声明形式。
6.在一个静态属性中使用abstract 是一个错误(因为抽象方法不存在)。
*一个抽象属性能够通过派生类使用 override 实现.
抽象类具有以下特征:
1.抽象类不能被实例化。
2.抽象类可以包含抽象方法和访问器
3.不能把抽象类用密封(sealed)来修饰,那就意味着类不能被继承,这违反抽象类被继承的原则。
4.一个派生于一个抽象类的非抽象类必须包括所有的继承来的未实现的抽象方法和访问器的实现
5.在方法和属性中使用abstract 关键字意味着包含它们的实现。
using System; namespace C的抽象类的使用 { class MainClass { public static void Main (string[] args) { Console.WriteLine ("Hello World!"); Chinese chinese = new Chinese (); chinese.Speack (); chinese.Run (); chinese.Smile (); Console.WriteLine (); Japanise japan = new Japanise (); japan.Speack (); japan.Run (); japan.Smile (); Console.WriteLine (); BlueCat blueCat = new BlueCat (); blueCat.Sleep (); blueCat.Breath (); blueCat.Speack (); } //在C#中使用关键字 abstract 来定义抽象类和抽象方法 //不能初始化,实例化的类叫抽象类,他们只提供部分类的实现,其他非抽象类可以继承抽象类来实例化。 //抽象类能够被用于类,方法,属性,索引器和事件,使用abstract 在一个类声明中表示该类倾向要作为其它类的基类 //成员被标示成abstract,或被包含进一个抽象类,必须被其派生类实现。 abstract class Human { //一个抽象方法不能含有方法体,且必须属于抽象类 abstract public void Speack(); abstract public void Run(); //抽象类可以包含非抽象方法 public virtual void Smile(){ Console.WriteLine ("你好!人类的微笑"); } } //非抽象类继承抽象类必须实现用override实现所有抽象类的抽象方法,如果抽象类有抽象父类或祖宗有抽象方法为实现,在这里必须实现。 class Chinese:Human { public override void Speack(){ Console.WriteLine("中国人说话"); } public override void Run(){ Console.WriteLine("中国人奔跑"); } } //子抽象类继承了抽象类可以实现部分的抽象方法(称为抽象类的部分实现),非抽象子类继承了子抽象类必须实现子抽象类为实现的方法,和子抽象类自身的抽象方法 abstract class YellowHuman : Human { override public void Speack(){ Console.WriteLine("YellowHuman Speak"); } abstract public void ShowFace(); } class Japanise : YellowHuman { override public void Run(){ Console.WriteLine("日本人奔跑"); } override public void ShowFace(){ Console.WriteLine("日本人是黄种人"); } } //抽象类可以继承非抽象类和接口 //一个抽象类必须为所有的接口成员提供实现 //一个用于实现接口的抽象类可能把接口方法安排到抽象方法上。 interface AnimalsMethod{ void Sleep(); void Speack(); } class Animals{ public void Breath(){ Console.WriteLine("这是动物的呼吸"); } } abstract class Cat:Animals, AnimalsMethod{ abstract public void Speack(); public void Sleep(){ Console.WriteLine ("这是一只猫的睡眠"); } } class BlueCat:Cat { override public void Speack(){ Console.WriteLine("这是一只蓝猫"); } } } }
相关文章推荐
- C#实现 word、pdf、ppt 转为图片
- C#学习之代理委托的使用
- C# 之 用NPOI类库操作Excel
- Divide Two Integers C#
- C#基础回顾:正则表达式
- c# winform 面向对象设计体育彩票选号器
- C#中抽象类与接口的区别之处
- C#实现在启动目录创建快捷方式的方法
- C#在文件读写结构体 Marshal效率低
- C#操作指针,用Reflector反编译系统代码看到的
- 用reflector看到C#Random类的实现
- C#指针读写结构体,效率高
- C# 中 Struct 与 Class 的区别,以及两者的适用场合
- C#的类类似于指针
- C# 的@是可定义Unicode变量的
- C#Unicode编码不可逆,Default也不可逆
- 讨厌C#的fixed,直接用指针的方法
- c# System.Threading.Timer是多线程,并能同时执行
- c# xml序列化和反序列化
- XML文件操作(C#)