ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

C# 抽象类与抽象方法详解

C# 抽象类与抽象方法详解 1. 引言如果继承是面向对象设计理论的基石那么抽象理论和方法就是继承理论的顶梁柱。在汉语词典中抽象是这样解释的将几个有区别的物体的共同特性或形象抽取出来或孤立地进行考虑的行动或过程。可以看出抽象就是从事物中提取特征和性质并不是事物本身。2. 什么是抽象具体应该如何理解呢大家都知道学生有一个共同的特征是必须学习那么学什么、如何学每一个学生就不一样了。这样可以提取学习这个动作为抽象方法而不考虑具体内容。动物类都有叫的动作具体动物如何叫暂不考虑先把共性提取出来。简单地说用来描述这些共性的类就是抽象类抽象类中不考虑具体实现只确定必须具有的行为就是抽象方法。3. 抽象方法抽象方法是一个没有实现的方法使用关键字 abstract 定义抽象方法。语法如下访问修饰符 abstract 返回类型 方法();例如public abstract void Cry();当一个实例方法声明中含有 abstract 修饰符时称之为抽象方法abstract methods。抽象方法只允许在抽象类中声明但是并不能实现抽象方法声明中只包含方法的签名抽象方法在其派生类中使用 override 关键字来重写。在抽象方法声明中不允许出现 static、virtual 或 override 中的任一修饰符。注意和普通方法不同抽象方法没有闭合大括号在方法括号后面直接加“;”号表明抽象方法中没有方法体即没有具体的实现。4. 抽象类抽象类是特殊的类只是不能被实例化除此之外具有类的其它特性抽象类可以包含抽象方法其它类不能。抽象方法只能声明于抽象类中且不包含任何实现只包含方法的签名派生类必须重写它们。另外抽象类可以派生自一个抽象类可以重写基类的抽象方法也可以不重写如果不重写则其派生类必须重写它们。抽象类声明时类前加关键字 abstract。抽象类不能被实例化因为没有具体实现的方法。抽象类中可以包含非抽象的方法。注子类继承抽象父类后可以使用 override 关键字重写父类中的抽象方法并做具体的实现。也可以不实现抽象方法留给后代实现这时子类仍旧是一个抽象类必须声明为 abstract。5. 抽象类的定义抽象类的定义方法如下访问修饰符 abstract class 类名 { // 抽象类体 }示例代码using System; public abstract class Parta { public abstract void Name(); public void A() { Console.WriteLine(姓名); } } public class Partb : Parta { public override void Name() { Console.WriteLine(姓名李哲宇); } } class Test { public static void Main() { Partb x new Partb(); x.Name(); } }说明抽象类中的方法除了抽象方法外还可以包含非抽象方法或者说是具体方法但是包含抽象方法的类一定是抽象类。6. 抽象类的特点抽象类是子类的描述就像模板。只有被子类继承才有实际意义。抽象类不能实例化。抽象类不能是密封的或者静态的即抽象类前不能有 static 或 sealed 关键字。
返回列表