十一、接口(接口的概念,实现,继承,实现)、抽象类与抽象方法(抽象类,抽象方法概念,使用)

接口

接口是一种用来定义程序的协议,它描述可属于任何类和结构的一组相关行为。

接口可由方法、属性、事件和索引器这四种成员类型的任何组合构成,但不能包含字段。

接口通过类继承来实现,一个类虽然只能继承一个基类,但可以继承任意接口。

声明实现接口的类时,需在基类列表中包含类所实现的接口的名称。

抽象类和抽象方法

如果一个类不与具体的事物相关联,而只是表达一种抽象的概念,仅仅是作为其派生类的一个基类,这样的类就是抽象类。

在抽象类中声明方法时,如果加上abstract关键字,则为抽象方法。

抽象类主要用来提供多个派生类可共享的基类的公共定义,他与非抽象类的主要区别有:

抽象类不能直接实例化。抽象类中可包含抽象成员,但非抽象类中不可以。抽象类不能被密封。

C#声明抽象类要使用abstract关键字,具体格式为:访问修饰符 abstract class 类名 :基类或接口{//类成员}

声明抽象方法要注意两点:抽象方法必须声明在抽象类中。声明抽象方法时,不能使用virtual、static和private修饰符

//抽象类与抽象方法的使用

public abstract class myClass
{
      private string id="";
      private string name="";
      public string ID    //编号属性及实现
     {
          get{return id;}
          set{id=value;}
     }
      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="BH001";//使用抽象类对象访问抽象类中的编号属性
             myclass.Name="TM";//使用抽象类对象访问抽象类中的姓名属性
             myclass.ShowInfo;//使用抽象类对象调用派生类中的方法
       }

}
    

运行结果为BH001 TM

原文地址:https://www.cnblogs.com/baixiao/p/7746202.html