final关键字以及什么是“组合”

final关键字

背景

时刻牢记,我们写的类是现实事物的抽象,而我们真正在公司中所遇到的项目往往业务比较复杂,可能会涉及到一系列复杂的概念都需要我们使用代码来表示,所以我们真实项目中所写的类也会有很多,类之间的关系也会更加复杂。
但是即使如此,我们并不希望之间的继承层次太复杂,一般我们不希望出现超过三层的继承关系,如果继承层次太多,就需要考虑对代码进行重构了。
如果想从语法上进行限制继承,就可以使用final关键字。

final关键字

曾经我们学过的final关键字,修饰一个变量或者字段的时候,表示常量(不能修改)
fianl:
final int a = 10;//修饰常量,只能被初始化一次,接下来就不能再修改了。
final :修饰类:密封类 特性:不能被继承,一旦一个类被final所修饰,那么这个类必然不能被继承。
final:修饰方法:密封方法

总结

final 关键字的功能是限制类被继承,“限制”这件事情意味着“不灵活”,在编程中,灵活往往不见得是一件好事,灵活可能意味着更容易出错。用final修饰的类被继承的时候,就会编译报错,此时就可以提示我们这样的继承是有悖这个类设计的初衷的。
我们平时是用的String字符串类,就是用final修饰的,不能被继承。

组合

组合

和继承类似,组合也是一种表达类之间关系的方式,也是能够达到代码重用的效果。
例如表示一个学校:
在这里插入图片描述
组合并没有涉及到特殊的语法(诸如extends这样的关键字),仅仅是将一个类的实例作为另一个类的字段。这是我们设计类的一种常用方式之一。

组合表示 has - a 语义

在上面的例子中,我们可以理解成一个学校中“有”若干学生和教师。

继承表示 is - a 语义

在继承总结的例子中,“动物和猫”的例子中,我们可以理解成一只猫也“是”一种动物。
链表中构造的节点类,在下面使用也是一种组合。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值