继承 封装 多态 (基础)描述性理解

面向对象程序设计具有:封装性,继承性,多态性。

1封装

封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如我们使用的电脑,电视,我们只需要会用即可,无需知道其内部是如何工作的,即使知道内部的工作原理,但我们在使用上并不完全依赖于其工作原理的细节。

我们采用封装的思想,是为了保证类内部数据结构的完整性,实用类的用户不能轻易的直接操作类的数据结构,只能执行类的公开数据。这样的好处是避免了外部操作对内部数据的影响,提高了程序的可维护性。

2继承

我们知道人与人之间可以有母子,父女等等一系列关系,那么类与类之间同样具有关系,这种关系被称为继承(两个类之间具有逻辑上的子父类关系)。使用这种继承思想可以缩短软件开发周期,复用那些已经定义好的类可以提高系统性能,减少系统在使用中的出现错误的概率。就像学生类可以继承人类一样,我们在创建学生类的时候可以拿人类 进行复用,并保留人类具有的属性和行为,学生类也应该有一些关于学习所具有的特有属性和特有行为。故学生类具有的东西,人类中可能就不具有(因为是在继承人类后的基础上根据自身特性后添加的),这样就可以节省定义人类和学生类共同具有的属性和行为时间,这就是继承的基本思想。

继承主要是利用特定对象之间的共同属性,如平行四边形和四边形。其中四边形可以为父类,平行四边形为子类,四边形所具有的平行四边形都具有,而平行四边形所具有的两边平行且相等的特性,四边形不一定不具有,故这样我们只需定义一个完整的四边形类,然后平行四边形类去继承它,并在自身类内添加特有属性,就完成了继承。

注意:Java中只支持单继承,和多层继承(son->father->grandpa)不支持多继承(子类有两个父类)

3多态

多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类及相关类。该统一风格可以由父类来实现,根据父类统一风格处理,可以实例化子类对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样降低了维护的难度,节省了时间。

多态的实现并不依赖于具体类,而是依赖于抽象类和接口。

我们以绘制图形类为例,绘制图形类作为所有绘制图形的父类,具有绘制图形的能力,但要执行这种能力,没有人知道应该画些什么(因为是绘制图形类,图形有千万种),所以使用抽象这个词来描述绘制图形类比较恰当。在Java语言中,称这样的类为抽象类,抽象类不可以实例化对象(因为不知道具体是什么东西,没法具体找到其对象)在多态的机制中父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体流程。实质上这个方法也是抽象的,如绘制图形类中的绘制方法只提供一个可以绘制图形的标准,并没有提供具体绘制图形的流程,因为没有人知道究竟需要绘制什么图形,当三角形需要绘制的时候,就可以继承绘制图形类,重写其中的绘制方法,并改写为绘制三角型。难道当我们需要绘制正方型,圆,每一次都需要实例化自己的子类吗?每一次都系要用子类的对象调用自己子类中的方法吗?当然不,那太麻烦了。故我们采用多态的思想,通过让向上转型,让父类能够调用子类的方法,故我们以后大多数只需调用父类即可,简化了程序的复杂性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值