抽象类和类成员,中抽象类和接口的不相同

By admin in 4858.com on 2019年4月3日

1.
不能够创设抽象类的实例。

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

  1. 不能够创制抽象类的实例。

  2. 抽象类首如果用来作为基类,可是抽象类也足以继续其余普通类或抽象类。

  3. 架空成员中得以涵盖抽象成员和1般性带完成的积极分子。

4858.com,4.
其余派生自抽象类的类必须选拔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.
抽象类主若是用来作为基类,然则抽象类也得以继承其余普通类或抽象类。

3.
虚幻成员中得以涵盖抽象成员和常见带达成的积极分子。

     含有abstract修饰符的class即为抽象类,抽象类是尤其的类,只是不可能被实例化,能够创立3个变量,其连串是三个抽象类,并让它指向具体子类的贰个实例;除此以外,具有类的别样特色;主要的是抽象类能够包含抽象方法,这是普普通通类所不能够的。抽象方法只好声称于抽象类中,且不包罗其余实现,派生类必须覆盖它们。其它,抽象类能够派生自五个抽象类,能够覆盖基类的说梅止渴方法也足以不掩盖。

三.
浮泛成员中得以分包抽象成员和平日带达成的积极分子。

4.
别样派生自抽象类的类必须使用override关键字贯彻该类全体的架空成员,除非派生类自个儿也是抽象类。

    二、接口:

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

伍.
架空成员只可以注明在抽象类中。

    接口是引用类型的,类似于类,和抽象类的相似之处有3点:    
一、不能够实例化;     二、包蕴未落到实处的点子评释;    
三、派生类必须达成未完毕的主意,抽象类是空洞方法,接口则是拥有成员(不仅是艺术包涵其余成员);

五.
虚无成员只好说明在抽象类中。

6.
虚幻成员包含:方法、属性、事件、索引。

    接口有如下特征:

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

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;}
                     }
               }
         }
}

 

   两者的语法分化:

 

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

   
2.抽象类中得以有普通成员变量,接口中从不普通成员变量

   
三.抽象类中能够分包非抽象的平时方法,接口中的全体办法必须都是虚幻的,不可能有非抽象的家常方法。

    四. 抽象类中的抽象方法的走访类型能够是public,protected,但接口中的抽象方法只好是public类型的,并且暗中同意即为public
abstract类型。

    伍. 抽象类中能够涵盖静态方法,接口中不能够包罗静态方法

    陆. 抽象类和接口中都可以包蕴静态成员变量,抽象类中的静态成员变量的造访类型能够随意,但接口中定义的变量只好是public static final类型,并且暗中同意即为public static
final类型。

    7. 三个类能够完结八个接口,但不得不三番五次贰个抽象类。

   八.接口能够用来扶助回调,而持续并不有所那一个特点.  
 9.抽象类达成的具体方法暗中认可为虚的,但贯彻接口的类中的接口方法却默许为非虚的,当然你也足以评释为虚的.
 

   抽象类和接口的选拔:

  一.假若预测要创立组件的四个版本,则开创抽象类。抽象类提供简单的点子来决定组件版本。
  二.假使创建的效益将在大范围的全异对象间使用,则运用接口。如若要规划小而简约的功能块,则动用接口。
 
叁.1旦要统一筹划大的机能单元,则接纳抽象类.就算要在组件的拥有完毕间提供通用的已实现效益,则应用抽象类。
  四.抽象类主要用来关系密切的靶子;而接口适合为不相干的类提供通用功用。

  5.好的接口定义应该是独具专一成效性的,而不是多效益的,不然造成接口污染。假设一个类只是达成了那个接口的中1个效应,而不得不去完结接口中的别的格局,就叫接口污染。  

发表评论

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

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有