虛函数,抽象方法,接口之间的区别

来源:互联网 发布:部落冲突 知乎 编辑:程序博客网 时间:2024/05/01 14:50
虛函数:由virtual声明,它允许在派生类中被重写,要重写方法,必须先声明为virtual
public class myclass              class myclass1:myclass
{                                       {              
public virtual int myint()          public override int myint()
{                                       {
      函数体;                            函数体1;
}                                       }
注:虚函数中可以有函数体,在子类里可以重写它,也可以不重写他
 
抽象类、抽象函数:由abstract声明,在抽象类中可以定义抽象方法,抽象方法基本沒有执行代码,派生类必须重写它,提供其执行代码:
public abstract class myclass        public class myclass1:myclass
{                                             {
public abstract int myint();           public override int myint()
}                                              {
                                                   函数体;
                                                }
                                               }
注:抽象函数里没有实现代码,如有派生类,必须重写他。--从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。
 
接口:由interface声明,是特殊的抽象类,是方法、属性、事件和索引符的组合,沒有字段,其成员无执行方式,无构造函数,不允许进行运算符重载,接口和它的没有任何访问修饰符,它总是公共的,不能声明为虚拟或静态,继承自接口的派生类必须实现接口中的所有方法

一个接口可从一个或多个基接口继承。

当基类型列表包含基类和接口时,基类必须是列表中的第一项。

实现接口的类可以显式实现该接口的成员。显式实现的成员不能通过类实例访问,而只能通过接口实例访问
抽象类与接口的区别:

1.抽象类可以包含非抽象方法和抽象方法。这里非抽象方法就是抽象类自己的成员。而接口里都是“抽象方法”,没有自己的成员

2.一个类可以继承自多个接口,但是只能继承一个类(包括抽象类)。

3.抽象类可以有字段。接口不能

总之,接口就相当于一个纯抽象类