菩提树的Framework架构

.net 架构,数据库设计,编码规范

导航

再谈抽象类与接口的区别

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!");
  }

 

posted on 2009-03-01 17:17  菩提树下  阅读(1462)  评论(10编辑  收藏  举报