首页 > 代码库 > 抽象类与抽象方法

抽象类与抽象方法

概述:一个不与具体事物相联系的类,只是表达一种抽象的概念,仅作为其派生类的一个基类,提供多个派生类可共享的基类的公共定义。

声明:访问修饰符  abstract   class    类名:基类或接口 

          {  //类成员  }

           说明:除abstract 、class 和类名外,其他都可省略

与非抽象类的区别:抽象类不能直接实例化;抽象类可包含抽象成员,非抽象类中不可包含抽象成员;抽象类不能被密封。

抽象方法:抽象类在声明方法时加上abstract关键字,且只是声明引入了一个新方法,而不提供该方法的实现,所以方法体中只有一个分号

               必须声明在抽象类中,不能使用virtual、static、private修饰符

注意:当从抽象类中派生一个非抽象类时,需要在非抽象类重写抽象方法,以提供具体的实现,使用override关键字

实例:

namespace _抽象类与抽象方法.cs

{    

public abstract class myClass   

  {       

  string id = "";

        public string Id     //编号属性及其实现        

{             get { return id; }             set { id = value; }         }       

  string name = "";

        public string Name   //姓名属性及其实现        

{             get { return name; }             set { name = value; }        

}        

public abstract void ShowInfo();     //抽象方法,用来输出信息     }

    public class DriveClass : myClass       //继承抽象类    

{      

   public override void ShowInfo()     //重写抽象类中输出信息的方法      

   {             Console.WriteLine(Id +""+Name);         }   

class Program
    {
        static void Main(string[] args)
        {
            DriveClass driveclass = new DriveClass();
            myClass myclass = driveclass;
            myclass.Id = "BH0001";
            myclass.Name = "TM";
            myclass.ShowInfo();
            Console.ReadKey();
        } 

}

}

抽象类与接口:

         抽象类和接口都包含可以有派生类继承的成员,它们都不能直接实例化,但可以声明它们的变量。

         抽象类主要用作对象系列的基类,共享某些主要特性,例如共同的目的和结构;接口主要用于类,这些类在基础水平上有所不同,

但任可以完成某些相同的任务。

         区别:派生类只能继承一个基类即只能继承一个抽象类,但可以继承任意多个接口

                  抽象类中可以定义成员的实现,但接口不可以

                  抽象类中可包含字段、构造函数、析构函数、静态成员或常量等,接口不可以

                  接口中的成员必需是共有的,但抽象类可以是其他的

抽象类与抽象方法