抽象类VS接口

      

     在设计模式中,碰到了两个名词,一个是抽象类,一个是接口。其实之前对这两个词是一知半解,现在详细了解一下~

 

抽象类


       抽象类顾名思义把类进行抽象。在编程的时候用abstract修饰的就是抽象类。

       那抽象是什么,抽象在面向对象里是很重要的一个思想。因为在面向对象的概念里,所有的对象都通过类来描述,然而,并不是所有的类都是描述对象的,如果某个类没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

       但是抽象类具有相对性,比如,用图形来说事儿。


 

      上图中,图形是抽象类,圆形矩形三角形是具体的类。但是另一种情况就是,出现了各种三角形之后,三角形这个类,也就是抽象类了。这就是相对性


 

     抽象类有一些特征:

      抽象类不能实例化。

      抽象类可以包含抽象方法和抽象访问器。

      不能用 sealed修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。

      从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。

 

接口


      理解接口其实也比较容易,它是针对行为而言的。是一种比抽象类更抽象的东西 。但是它不是类。接口是用来建立类与类之间的协议,它所提供的只是一种形式,而没有具体的实现。再比如,之前自考学过的,人类与程序的接口就是用户界面。用户界面是人类和程序进行交流的接口。

 

       那么为什么要用接口?在程序开发的过程中,可能需要从继承链中插入一个类,让它的子类具有某些功能,但是不影响它们的父类。比如这样一个继承链A -> B -> C -> D -> E,想要让CDE具备某些相同的功能,但是不能影响AB,可能会想到让C再继承一个父类,然而C只能有一个父类,所以这个方法是行不通的。接口的好处就是,在一个继承链内,任何一个类都可以实现一个接口。有了接口,这个问题迎刃而解。

 

     接口有哪些属性呢?

       接口也不能直接实例化

       接口是被类去实现的

       接口中定义的变量只能是公共静态的常量

       接口可以多继承接口

 

总结


       子类只能有一个父类,只能单继承。而接口就可以实现多继承。可以让代码更灵活,充分体现了面向对象的思想。

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值