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

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

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

  2. 【金沙注册送58】中抽象类和接口的界别,抽象类和类成员。抽象类主假使用来作为基类,可是抽象类也得以几次三番其余普通类或抽象类。

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

    }

 

金沙注册送58, 1.
无法创设抽象类的实例。 贰.
抽象类首若是用来作为基类,不过抽象类也足以三番五次别的普通类或抽象类。…

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

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

2.
抽象类主若是用来作为基类,可是抽象类也足以承继其余普通类或抽象类。

     一、抽象类:

二.
抽象类首假若用来作为基类,然而抽象类也可以一连此外普通类或抽象类。

3.
空洞成员中能够包罗抽象成员和1般带落成的分子。

     含有abstract修饰符的class即为抽象类,抽象类是出格的类,只是不可能被实例化,能够创制3个变量,其项目是2个抽象类,并让它指向具体子类的一个实例;除此以外,具有类的任何特色;重要的是抽象类能够包涵抽象方法,那是壹般类所不可能的。抽象方法只可以声称于抽象类中,且不含有其余落成,派生类必须覆盖它们。其余,抽象类可以派生自二个抽象类,能够覆盖基类的肤浅方法也足以不掩盖。

三.
虚无成员中能够分包抽象成员和常见带落成的积极分子。

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

    二、接口:

4.
别的派生自抽象类的类必须选择override关键字贯彻该类全体的抽象成员,除非派生类本人也是抽象类。

5.
虚无成员只好注脚在抽象类中。

    接口是引用类型的,类似于类,和抽象类的相似之处有叁点:    
1、不可能实例化;     贰、包蕴未得以完结的秘技注解;    
叁、派生类必须落成未达成的措施,抽象类是抽象方法,接口则是持有成员(不仅是艺术包蕴别的成员);

5.
浮泛成员只可以表达在抽象类中。

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

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

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类型。

    5. 抽象类中得以分包静态方法,接口中无法包涵静态方法

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

    7. 叁个类可以落成多少个接口,但只好继续一个抽象类。

   八.接口能够用来援救回调,而后续并不享有这几个特点.  
 玖.抽象类落成的具体方法默以为虚的,但实现接口的类中的接口方法却默以为非虚的,当然你也足以申明为虚的.
 

   抽象类和接口的应用:

  壹.只要预测要开创组件的三个版本,则开创抽象类。抽象类提供简单的艺术来调整组件版本。
  二.如果创建的成效将在大范围的全异对象间接选举用,则运用接口。假如要设计小而简单的功效块,则动用接口。
 
3.万1要规划大的功能单元,则使用抽象类.如若要在组件的兼具达成间提供通用的已得以落成效益,则利用抽象类。
  肆.抽象类主要用于关系密切的目的;而接口适合为不相干的类提供通用功用。

  5.好的接口定义应该是具备专1效用性的,而不是多效益的,不然产生接口污染。若是七个类只是完成了这些接口的中一个效率,而只可以去落到实处接口中的别的措施,就叫接口污染。  

相关文章

网站地图xml地图