欢迎光临散文网 会员登陆 & 注册

程序设计中的抽象类与接口

2020-10-30 16:13 作者:Tuple_元组  | 我要投稿

一、导入语:

抽象类和接口都是进行面向对象设计时专用的设计结构,在实际进行项目设计时,经常需要考虑的问题就是使用抽象类还是接口?下面通过对于抽象类和接口进行简单的比较,了解两者之间的区别和联系,从而在实际设计时使用恰当的结构。

二、相关概念

1、抽象类:声明方法的存在而不去实现它的类被叫做抽像类(abstract class)或含有一个或多个抽象方法的类称为抽象类且不能实例化。

2、接口:是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。

三、抽象类与接口的异同

1、类是对对象的抽象,抽象类则是对类的抽象.而接口只是一个行为的规范或规定。

2、一个类一次可以实现若干个接口,但是只能扩展一个父类(继承一个父类)。

3、如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口方法。

4、接口和抽象类都不能实例化,都包含未实现的方法声明,派生类必须实现未实现的方法,一个抽象类可以包含抽象和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的基类抽象方法,而接口则只能对其所有成员进行方法签名(方法、其他成员)。

5、抽象类用abstract class声明,接口用interface声明,接口名称前要加‘I’,接口中的方法或属性前面不能有修饰符、方法没有方法体。

interface IInterface

{

    void Method1();//只能声明方法签名

}

abstract class MyAbs:IInterface  //抽象类还可继承于接口

{

   public abstract void AbMethod1();//抽象方法

   public void Method1() //非抽象方法

    {

        Console.WriteLine("MethodimplementedfromtheIInterface");

    }

}

class MyClass:MyAbs

{

    public override void AbMethod1() //继承后,必须实现抽象方法

    {  

         Console.WriteLine("Abstarct method #1"); 

    }  

}

class MyClient

{

    public static void Main()

    {

        MyClass mc=new MyClass();

        mc.Method1();

    }

}

四、抽象类与接口的用法

1、什么时候使用抽象类或接口?

当设计中为了规范类中方法声明的结构(即类的行为)时,使用抽象类或接口。也就是强制子类对外部提供统一的方法声明时,使用抽象类或接口。

2、什么时候使用抽象类?

当满足以下的条件时,最好使用抽象类进行设计:

a)子类不继承其它父类

b)子类中存在完全相同的功能实现的方法

c)子类中存在相同的属性

d)设计出的结构需要继承其它类

当需要满足d条件时,只能使用抽象类,否则也可以考虑使用接口实现。

3、什么时候使用接口?

当满足以下的条件时,最好使用接口进行设计:

a)子类已经继承了其它父类

b)子类中不存在完全相同的功能实现方法

c)子类中不存在相同的属性

d)设计出的结构不需要继承其它类

当需要满足a条件时,只能使用接口,否则也可以考虑使用抽象类实现。

4、抽象类和接口的其它用途

a)禁止创建该类的对象时,可以把该类声明为抽象类。

b)当需要存储大量的常量数据,而这些常量数据将会在项目中的多个类之间使用时,可以使用接口。

c)当需要统一具有某种功能的类的对象时,可以使用接口。


程序设计中的抽象类与接口的评论 (共 条)

分享到微博请遵守国家法律