威尼斯人线上娱乐

中抽象类和接口的分别,抽象类和类成员

18 4月 , 2019  

1.
不可能创立抽象类的实例。

抽象类和类成员,抽象类类成员

  1. 无法创立抽象类的实例。

  2. 抽象类首假设用来作为基类,可是抽象类也得以延续别的普通类或抽象类。

  3. 虚幻成员中能够涵盖抽象成员和一般带达成的积极分子。

四.
其他派生自抽象类的类必须选用override关键字贯彻该类全数的虚幻成员,除非派生类本身也是抽象类。

  1. 空洞成员只好阐明在抽象类中。

  2. 泛泛成员包含:方法、属性、事件、索引。

    namespace abstract_Example

    {

          class Program
         {
              static void Main(string[] args)
             {
                    MyClass m = new MyClass();
                    m.PropertyValue = 100;
                    m.Output();
                    m.DoWork(m.PropertyValue );
                    Console.ReadKey();
              }
              public abstract class A
              {
                    public abstract void DoWork(int i);   //抽象成员只能声明在抽象类中 
                    public abstract int PropertyValue
                    {
                         get;
                         set;
                    }
                    public void Output()                        // 抽象类中可以包含普通带实现的成员
                    {
                         Console.WriteLine("I am Abstract Class A");
                    }
               }
               public class MyClass:A
               {
                     int MyValue;
                     public override void DoWork(int i)    //派生类必须全部实现基类中所有抽象成员
                     {
                          Console.WriteLine("I am Class MyClass. My Value is {0}",i);
                     } 
                     public override int PropertyValue
    
                     {
                          get { return MyValue; }
                          set{MyValue = value;}
                      }
                }
          }
    

    威尼斯人线上娱乐, }

中抽象类和接口的分别,抽象类和类成员。 

一.
不能够创立抽象类的实例。 2.
抽象类首假诺用来作为基类,可是抽象类也足以继续此外普通类或抽象类。…

大家在编制程序时都轻巧把抽象类和接口搞混,上面为大家从概念上上课抽象类和接口的分别:

一.
不可能创制抽象类的实例。

二.
抽象类首假如用来作为基类,不过抽象类也得以延续其余普通类或抽象类。

     一、抽象类:

2.
抽象类主要是用来作为基类,然则抽象类也足以继续其它普通类或抽象类。

三.
虚幻成员中能够涵盖抽象成员和日常带达成的成员。

     含有abstract修饰符的class即为抽象类,抽象类是万分的类,只是不能够被实例化,能够成立二个变量,其品种是三个抽象类,并让它指向具体子类的三个实例;除此以外,具备类的其余特色;主要的是抽象类能够包蕴抽象方法,那是平常类所不可能的。抽象方法只好宣称于抽象类中,且不包蕴其余完成,派生类必须覆盖它们。其余,抽象类能够派生自2个抽象类,能够覆盖基类的指雁为羹方法也能够不掩盖。

三.
浮泛成员中能够分包抽象成员和常见带完成的积极分子。

四.
别样派生自抽象类的类必须运用override关键字贯彻该类全部的悬空成员,除非派生类本身也是抽象类。

    二、接口:

四.
任何派生自抽象类的类必须选用override关键字贯彻该类全数的画饼充饥成员,除非派生类自个儿也是抽象类。

5.
架空成员只好注解在抽象类中。

    接口是引用类型的,类似于类,和抽象类的相似之处有三点:    
壹、无法实例化;     2、包罗未达成的艺术注脚;    
三、派生类必须兑现未兑现的不二等秘书技,抽象类是空虚方法,接口则是有着成员(不仅是办法包蕴其余成员);

5.
虚无成员只可以表明在抽象类中。

陆.
浮泛成员包蕴:方法、属性、事件、索引。

    接口有如下特征:

陆.
架空成员包罗:方法、属性、事件、索引。

namespace abstract_Example

{

         class Program
        {
             static void Main(string[] args)
            {
                   MyClass m = new MyClass();
                   m.PropertyValue = 100;
                   m.Output();
                   m.DoWork(m.PropertyValue );
                   Console.ReadKey();
             }
             public abstract class A
             {
                   public abstract void DoWork(int i);   //抽象成员只能声明在抽象类中 
                   public abstract int PropertyValue
                   {
                        get;
                        set;
                   }
                   public void Output()                        // 抽象类中可以包含普通带实现的成员
                   {
                        Console.WriteLine("I am Abstract Class A");
                   }
              }
              public class MyClass:A
              {
                    int MyValue;
                    public override void DoWork(int i)    //派生类必须全部实现基类中所有抽象成员
                    {
                         Console.WriteLine("I am Class MyClass. My Value is {0}",i);
                    } 
                    public override int PropertyValue

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

   
接口除了能够分包方法之外,还能涵盖属性、索引器、事件,而且那么些分子都被定义为国有的。除此而外,不可能包含别的其余的分子,例如:常量、域、构造函数、析构函数、静态成员。二个类能够直接接轨八个接口,但不得不一直接轨贰个类(包含抽象类)。
 

namespace abstract_Example

{

         class Program
        {
             static void Main(string[] args)
            {
                   MyClass m = new MyClass();
                   m.PropertyValue = 100;
                   m.Output();
                   m.DoWork(m.PropertyValue );
                   Console.ReadKey();
             }
             public abstract class A
             {
                   public abstract void DoWork(int i);   //抽象成员只能声明在抽象类中 
                   public abstract int PropertyValue
                   {
                        get;
                        set;
                   }
                   public void Output()                        // 抽象类中可以包含普通带实现的成员
                   {
                        Console.WriteLine("I am Abstract Class A");
                   }
              }
              public class MyClass:A
              {
                    int MyValue;
                    public override void DoWork(int i)    //派生类必须全部实现基类中所有抽象成员
                    {
                         Console.WriteLine("I am Class MyClass. My Value is {0}",i);
                    } 
                    public override int PropertyValue

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

 

   两者的语法差异:

 

   
一.抽象类能够有构造方法,接口中无法有构造方法。

   
贰.抽象类中得以有平凡成员变量,接口中从不通常成员变量

   
3.抽象类中能够涵盖非抽象的平凡方法,接口中的全数办法必须都以空虚的,无法有非抽象的常见方法。

    4. 抽象类中的抽象方法的拜会类型能够是public,protected,但接口中的抽象方法只可以是public类型的,并且私下认可即为public
abstract类型。

    伍. 抽象类中能够包括静态方法,接口中无法包涵静态方法

    陆. 抽象类和接口中都可以分包静态成员变量,抽象类中的静态成员变量的拜访类型可以自由,但接口中定义的变量只能是public static final类型,并且默许即为public static
final类型。

    柒. 二个类能够完毕八个接口,但只可以一而再三个抽象类。

   八.接口能够用于帮助回调,而三番五次并不具备那个特点.  
 9.抽象类完结的具体方法默感到虚的,但贯彻接口的类中的接口方法却默感到非虚的,当然你也能够注明为虚的.
 

   抽象类和接口的采纳:

  一.万壹预测要开创组件的多少个版本,则开创抽象类。抽象类提供轻松的措施来调节组件版本。
  2.只要创造的效劳将要大范围的全异对象间使用,则运用接口。借使要统一筹划小而简约的功效块,则动用接口。
 
叁.借使要设计大的效应单元,则采用抽象类.如若要在组件的享有完成间提供通用的已兑现效益,则应用抽象类。
  四.抽象类首要用以关系密切的对象;而接口适合为不相干的类提供通用作用。

  5.好的接口定义应该是富有专一成效性的,而不是多效益的,不然产生接口污染。假设3个类只是达成了这些接口的中叁个职能,而不得不去达成接口中的别的措施,就叫接口污染。  


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图