继承的原理java_复用如何实现?继承的原理是什么?向上转型是什么?

本文探讨了Java中的对象复用,通过组合实现类之间的拥有关系,限制对象访问以提高代码安全性。同时,介绍了继承的概念,通过基类与子类的关系减少代码重复。向上转型允许将子类对象视为父类,增强代码灵活性。最后,解释了动态绑定和多态在Java中的应用,展示了如何通过方法覆盖和多态性提高代码的可扩展性。
摘要由CSDN通过智能技术生成

复用如何实现?

我们在日常开发中,为了解决一个问题,就创建一个对象,然后再解决另一个问题,再创建一个对象,如果对象不能重复利用,那么我们的代码会随着系统的复杂度,代码量变得非常庞大。

所以,Java语言中,对象是可以复用的,而且还可以将一个对象放到一个新类里面,通常需要再给它加上访问限制,比如private,从而限制客户端程序员访问修改这些对象,这种复用的方式就叫做组合,是一种拥有的关系,比如鸟拥有眼睛一样,眼睛这个对象是鸟这个类的一部分。

53a55ed75ff3acc4012301544b33f784.png

另外需要注意的是,我们在创建新类的时候,应该先考虑使用组合,再考虑用继承,因为继承使用不好,会有一些问题,这个在后面会讲到。

继承的原理是什么?

我们来设想一个场景,假如有一个鸟类,这个鸟类属性有颜色、嘴巴等,行为有飞、声音等。如果我们要创建一个具体的鸟类型,比如啄木鸟,那么这个啄木鸟的类其实和鸟类是具有很多相同的属性的,如果我们单独创建啄木鸟类,就需要把鸟类里面的代码再重新写一遍,这样就会造成代码重复,降低开发效率。

但是如果我们把鸟类作为一个基类,让啄木鸟类来继承它,然后再在啄木鸟类里面添加属于啄木鸟的独有的属性和行为,那这样就会好很多。

300c99fe9c3243c55aaddd8d89023f19.png

基类,也就是父类,可以拥有很多个子类,但是一个子类,只能拥有一个父类。所有发送给父类的消息,都可以发送给子类。

我们在实际使用中,肯定需要让子类和父类不同,要不然就没有意义了。为了拓展子类的功能,通常可以通过在子类里面添加新方法、覆盖方法两种方式来实现。

添加新方法很简单,不做赘述。覆盖需要注意的是,方法名称、返回值和参数必须和父类相同,但是子类里面的方法体是新的。

向上转型是什么?

面向对象语言是采用后期绑定额,也就是说给对象发消息时,我们不知道被调用的代码是什么,只有到运行的时候才知道,编译器只检查方法是否存在,类型和参数是否正确,并不关心具体代码。

而且Java通过一段特殊代码来执行后期绑定,根据这段代码,就知道想哪个对象发送消息,也就知道了消息具体职责。Java是默认执行动态绑定的。

f2eb7e668f6b0b405d6be0476292e402.png

我们以多边形为例,写一段代码,多边形Shape是个父类,子类有Circle、Triangle和Square。:

//方法定义部分

void do(Shape shape) {

shape.erase();

shape.draw();

}

//调用部分代码

Circle c = new Circle();

Triangle t = new Triangle();

Square s = new Square ();

do(c);

do(t);

do(s);

我们以do(c)为例,来看一下,当我们传入c对象,也就是圆形这个对象,是怎么处理的。因为Circle是Shape的子类,那么当Circle的对象传入do()时,就可以把子类看作它的父类,这过程就是向上转型。

而且当我们传入c这个对象时,执行里面的方法shape.erase()和shape.draw()时,它执行的就是Circle这个子类的方法。举一反三,如果传入的是Square的对象或者是Triangle的对象,那么执行的方法就是它们各自的shape.erase()和shape.draw()方法,这就极大的提高了代码的灵活性。

892e7f8516a7ce8d94ef8c965f20caef.png

这里也运用到了多态的思想,这个会在以后讲到的,这里只作为大概的了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值