C#[抽象类,接口]

Posted wangwangwangMax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#[抽象类,接口]相关的知识,希望对你有一定的参考价值。

Ⅰ.抽象类

    1.抽象类、抽象方法

      抽象类:通常情况下,它里面有抽象方法,类前面定义了一个abstract

      抽象方法:只定义了方法的名称,没有定义方法的内容

   2.为什么要使用抽象类、抽象方法?

      都是为了继承

   3. 怎么去定义抽象类,抽象方法?

      abstract +类名,abstract+方法名

   4.特点:

     ❶.抽象类不能被实例化; 

     ❷.抽象方法的作用是为子类提供一个统一的接口,抽象方面里面只有声明,没有实现;

     ❸. 一个类一旦继承了一个抽象类,就必须实现对该抽象类里面所有的抽象方法的实现;

public abstract class Person
    {
        public abstract void A();
        public abstract void B();
    }
Person
 public class C :Person
    {
        public override void A()
       {
            Console.WriteLine("China");
           
        }
        public override void B()
        {
            Console.WriteLine("nihao");
        }
        public static void Main()
        {
            C me = new C();
            me.A();
        }
 }
class C :Person

     ❹.一个抽象类里面可以有非抽象方法,但是一旦一个类里面有抽象方法,该类就为抽象类了;

     ❺.抽象方法在声明后用一个;结束,不需要用{};

     ❻.抽象方法在覆写的时候不需要声明为虚方法;

 

Ⅱ.接口

  接口:可以看成一个更加严格意义上的抽象类,当是一个接口的时候,它里面只能是抽象方法,而不能有非抽象方法

1、怎么去定义一个接口?

    Interface +类名

2、怎么去定义接口里面的方法?

     eg:

         void A();

         也可以加上参数void A(string name);

        注意:千万不能这么写,void B(){};//不能这样写,因为接口里面全部都是只定义了方法名,而没有具体的实现过程

 4、特点:

      ❶.接口用来实现多继承,一个类只能有一个父类,但可以继承于多个接口class A :B,C

         (可以是继承这个接口class Animal:Interface1,也可以继承另一一个接口class Animal:Interface1,Interface2)

      ❷. 接口是一种特殊的抽象类,它里面规定得更严格,里面的方法只能为抽象方法

      ❸.定义一个接口的时候,一般为缺省,即interface +类名,前面自动加上了public abstract,定义接口中的方法时,也只需要写返回类型 +方法名即可,因为也默认为public abstract

      ❹.接口里面的所有成员都是公共的

      ❺.一个类继承与一个接口,就必须完成该接口中所有方法的实现

      ❻.接口不能包含字段,构造函数,静态变量,或者常量等

 5、接口用在什么地方?

      接口是多继承,接口的作用相当于一个工厂要生产插座,提供一个模型,模型没有提供实现的具体方法,具体的实现过程,只是定义了一个模型。

 6、为什么要使用接口?

      就是为了继承,统一规范。

 interface Interface1
    {
        //接口里面只能用抽象的方法
        void A();
        void B(string Name);//string Name参数可以写
    }
Interface1
 class Animal:Interface1
    {
        //一个类继承了一个接口,就要去完成接口里面所有的override,必须要override
        public override void A()
        {
 
        }
        public override void B()
        {
 
        }
        public Animal()
        {
            Console.WriteLine("我是动物类!");
        }
    }
Animal:Interface1(继承接口)

 

 Ⅲ.抽象类和接口有什么区别?

   区别:

      1.抽象类:有抽象的方法,也有非抽象的方法;

         接口:是更加严格意义上的抽象方法,里面必须全部是抽象方法;

      2.抽象类:抽象类里面的成员可以是私有的private,公共的public,受保护的protected;

         接口:里面所有成员都是公共的public;

   共:

       1.一个类继承一个抽象类或者一个接口,它必须要override抽象类/接口里面的所有方法。

 

以上是关于C#[抽象类,接口]的主要内容,如果未能解决你的问题,请参考以下文章

C#中接口和抽象类

C# 中基类,虚类,抽象类,密封类,接口的区别

抽象类的 C# 接口继承

C#中的抽象类和接口[重复]

C#程序设计之抽象类多态和接口

C# 类 - 接口 Interface