zoukankan      html  css  js  c++  java
  • the Differences between abstract class & interface in C#接口和抽象类的区别

        abstract class and interface in C# look like much, but sometimes they get the similiar use. However, there are still much differences between them. here we go.
        抽象类和接口初看上去很象,但是还是有很多区别的。
       a) Interface Grammar接口语法
       [public|protected|internal|private] interface interfaceName
        {
            public int add(int x,int y);
    //this is error! interface memeber can not be described with any characters to declare its access attribute.
    //接口中任何成员和属性不能被任何修饰符修饰来表明其访问属性!
            int add(int x,int y);
    //this is right!
            int Count{get;} //interface property接口属性
            string this[int index]{get;set;}//index interface 接口索引
        }

        Difference:    
            1. in interface, all interface members can not be decorated with any other access tag,such as public,private.etc.
            2. in abtract class, such case is just on the opposite.
        
        b) abstract class Grammar 抽象类语法
            [public|protected|internal|private] abstct class className
            {
                public abstract int add(int x,int y);
                //it's ok, but that forbidden in interface!
                //在abstract class中,类成员可以有各种修饰符。如果该类成员没有被implement,那么该类一定要被标示为abstact方法。否则出错!当然也可以实现该方法。如下multiply方法所示
                public virtual int multiply(int x,int y)
                {
                    return x*y;
                }
            }

            Difference:
            1.in interface, all interface memebers can not be implemented. and it's just an declaration  for other class which will inherented from it and implemented all of them.
            在接口中,所有接口成员都不能被实现,它只是一个申明而已,其他类继承自该接口,并且要实现该接口中的所有成员。
            2 in abstract class, its member can be implemented ,otherwise must be decorated with abstract that is the same with interface . of course, any class inherented from this  must implemented all its abstract method. of course, u can also override the method that has already implemented method.
            在抽象类中,其成员可以被实现,如果不实现的话,其方法成员一定要被标标示为abstract. 同时,任何继承于该抽象类的类必须要实现其所有标示为abstract的方法,这点与interface相同。或者该类也可以override该抽象类中的method. 这一点interface绝对不可能,因为interface中根本没有实现过,何来override?

            

  • 相关阅读:
    GUI常用监听事件
    GUI容器之布局管理器
    布局管理器的综合应用
    GUI容器之Panel
    mongodb
    redis持久化
    本地window启动redis
    redis主从模式
    hash 哈希
    set集合
  • 原文地址:https://www.cnblogs.com/Winston/p/1166876.html
Copyright © 2011-2022 走看看