抽象类和接口本质的区别:
首先要明确,接口不是类,所以也不是抽象类。类是属性和方法容器,但是这些属性和方法没有任何区别的堆积在一起,当开发人员要寻找某个方法时,将很不方便,这个时候,接口出现了,接口的出现就是为了解决这个问题。接口将类的内部属性和方法进行分类,定义不同功能组的属性和方法。
抽象类体现的是总体上的协同,接口的意义就是公共行为的载体,所以他的成员都是隐式公有的,不能加上修饰符。。
比如:某一个抽象类是车:abstruct car,一个抽象类是火车 abstruct trans.
继承和间接继承car的类都拥有car的一个特性,这些特性也是带有abstract的属性,方法,字段等的实现;不带的是可选项;
但是car 和 trans 都拥有一些共同的功能,比如xxx啦,xxx啦。
接下来一段代码演示他们的其他区别项:
interface Inter
{
void func();//必须实现
void func2();//必选实现
}
public abstract class classA
{
public abstract void classAfunc4();//必须实现
public abstract void func();//必须实现
public virtual void func3() { }//可选实现
}
public abstract class classB:classA
{
public abstract void classBfunc();//必须实现
}
//继承了classB不只需要实现classB的内容,还需实现classA的;
class Program : classB,Inter
{
void Inter.func() { }//在与其他类同名时,加上前缀
public override void func() { }
public override void classBfunc() { }
public override void classAfunc4() { }
public void func2(){}
static void Main(string[] args)
{
}
}
其他更细致的区别见其他的文章: