java抽象类和接口(学习笔记)

这几天看接口的相关知识,觉得还是记录下来,以便以后复习。抽象类和接口的比较如下:

比较

抽象类

接口

定义

抽象类可以以偶用public,abstract,final,修饰

不用public,则默认包访问权限,但不能用protected修饰。

接口可以用public,abstract修饰

隐式地为abstract.

不用public,则默认包访问权限,但不能用protected修饰。

属性

可以任意的定义属性,和普通类没有区别。

属性域默认为static和 final的

方法

可以任意定义方法,修饰词没有限制,和普通类相同。既可以定义普通方法体,也可以定义抽象方法,这是普通类所不可以的。

方法隐式地为public和abstract的。并且不可以用protected和static修饰。


        接口使抽象的概念更向前迈进了一步。接口更像是抽象类的抽象。但是接口不仅仅是一个极度抽象的类,它还允许我们通过创建一个能够向上转型为多种基类的类型,来实现某种类似多重继承的特性。另外,内部类也有间接实现多重继承的意思。一定要记住的是,我们之所以使用接口,核心原因就是:为了能够向上转型为多个基类型。

 选择抽象类还是接口?

        编程思想涨势这么说的,恰当的原则应该是优先选择类而不是接口,从类开始。如果接口的必须性,变得非常明确,那么就进行重构。任何抽象性都应该是应真正的需求而产生的。接口是一种重要的工具,但是它们容易被滥用。

 例子:

         接口被经常用得到的地方是Collection Framework。这个框架定义了一组非常重要的接口,它们是由一组多个类实现的。通过仅仅研究主要的接口,你可以有效的掌握整个框架,因为特别的实现类一般不影响设计的整体。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值