接口和抽象类

本文探讨了接口与抽象类在软件设计中的应用原则,通过AbstractCollection抽象类的实例,解析了size()方法的不同实现方式,以及ArrayList和LinkedList子类的具体表现。文章还深入讨论了为何在LinkedList中size属性会使用transient修饰符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口就是一份契约,方法名,返回值,抛出的异常你都得按照我的来。

抽象类包含一组具体的特征,比如某些品牌特定型号的汽车,底盘,控制电路,刹车系统等是抽象出来的特征,是一样的,但是根据高低配的不同,内饰,头等,显示屏这些可以存在不同的版本实现

 

 

 

 

 

 

 

 

具体到这个AbstractCollection抽象类,isEmpty的判空都是一样的,只要size==0就为空,但是size()的实现根据子类不同而不同,比如链表和顺序表的size方法实现就不一样,于是这里只是定义了一个抽象方法size,具体实现交给Abstractcollection的子类去实现

 

 

当纠结定义接口还是抽象类的时候,优先推荐定义接口,遵循接口隔离的原则,按照某个维度划分为多个接口,然后再用抽象类去implement某些接口,这样做可以方便后续的扩展和重构

 

 

 

 

接着Abstractcollection,我想找几个实现类看看是不是这样,找到了arraylist和linkedlist这两个子类,本来父类Abstractcollect实现类isEmpty方法,子类继承了直接使用就行,但是我发现arraylist中又把isEmpty实现了一遍,而且也是判断size==0 跟父类中一样,进而又发现了一个新的问题,linkedlist中size有transient修饰符而arraylist没有,于是想了解为什么linkedlist中的size要加上transient修饰符,在网上找了半天,没有找到答案

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值