1.一个抽象类仍然可以有实现:它能够有成员,非抽象方法或属性,而接口不能有实现和成员变量。
2.一个.Net类只能从一个基类中派生,即基类是抽象的。然而,提个.Net类可以根据需要实现多个接口。
3.抽象类可以从其他类或从一个接口或多个接口中派生,而接口只能从另外一个接口中派生。
4.抽象类能够有分公共方法和属性,即便它们都是抽象的,根据定义接口中所有成员都是非公共的。
5.抽象类中可以有静态方法和静态成员,同时定义常量,而接口不包含其中任何一个。
附:抽象类使用的经典例子:
using System;
abstract class Vehicle //定义汽车类
{
public int wheels; //公有成员:轮子个数
protected float weight; //保护成员:重量
public Vehicle(int w,float g){
wheels=w;
weight=g;
}
public virtual void Speak(){
Console.WriteLine("the w vehicle is speaking!");
}
};
class Car:Vehicle //定义轿车类
{
int passengers; //私有成员:乘客数
public Car(int w,float g,int p):base(w,g)
{
wheels=w;
weight=g;
passengers=p;
}
public override void Speak(){
Console.WriteLine("The car is speaking:Di-di!");
}
}
class Truck:Vehicle //定义卡车类
{
int passengers; //私有成员:乘客数
float load; //私有成员:载重量
public Truck(int w,float g,int p,float l):base(w,g)
{
wheels=w;
weight=g;
passengers=p;
load=l;
}
public override void Speak(){
Console.WriteLine("The truck is speaking:Ba-ba!");
}