每日一练3: java面向对象程序设计核心概念

程序设计语言到目前为止主要经历了两种程序设计语言模式:一是面向过程的程序设计语言,如C语言;二是面向对象的程序设计语言,如C++和java。面向过程的编程方式主要是按分步骤的方法来解决现实世界中的问题。面向对象的编程方式主要是按功能模块来解决现实世界中的问题。这两种模式的根本区别在于面向过程更接近于人们认识事物的过程,面向对象的方式更符合描述事物本身的结构和行为。接下来重点介绍下java面向对象的几个特性:封装、继承、多态。

一、封装

封装性描述的事物的属性和行为的整体性。对于动物这个类型而言,动物一般都具有描述其形态的属性和描述其具有那些行为的动作。属性和行为动作是一个整体。对外只提供相应的接口。外部用户只能通过接口去操作其内部的属性。将不需要让外部知道的属性尽可能隐藏起来,对外不可见。举例说明,银行账号是一个类,银行账号具有开户名、开户日期、账户类型、账号密码、账户余额等属性,银行账号一般支持的操作有查询账户的基本信息,如开户名、开户日期、账户类型、余额等,还有可以修改密码等基本操作。银行账号示例类如下图1所示:

图1银行账户类示例

二、继承

继承描述的是现实世界中事物的层次关系。正如现实中每个人都有父母,每个人长大后可能还会有小孩。孩子的有些特征是从父母身上继承过来的,但小孩也有自己独立的个性和思想,这也是小孩区别于父母的重要特征。因此,继承的特性在于高度抽象父类和子类的共有属性和行为,达到复用和模拟现实世界中事物的目的。如下图2表示的是父类有身高和体重属性,图3表示子类继承父类,但由于父类中的身高和体重是protected类型的,因此子类也具有身高和体重属性,在子类中为了描述和父类的区别增加了play方法,这样子类具有自己的个性化play行为了。

图2父类代码示例

 

图3子类代码示例

三、多态

多态是指程序中定义的引用变量所指向的具体类型和通过该引用调用的方法是不确定的,而是在运行时动态确定的。也就是说如果父类和父类的多个子类具有同样的方法,通过父类或接口引用变量调用方法时,需要在程序运行的上下文中动态确定调用某一个方法。因此,这个多态的属性相当于给了类具有这样的能力,能够具体情况具体分析。类似于三国中的诸葛亮,在三国的诸多矛盾中,根据特殊的情况作出不同的战略选择,虽然是同一个军师,但选取的战略却是动态的,需要根据实际情况来确定的。

如下图4中,在Parent类中增加f1()方法,在Child类中重写了f1()方法,相当于Child类中对于f1()方法的实现,子类有了自己的主意,它不是简单的继承父类中的f1()方法。在图6的示例中,先声明了一个子类对象,并将子类对象赋值给父类对象parent,由于此时子类也重写了f1()方法,因此调用的是子类的f1()方法。从图7的运行结果可以看出此时实际调用的是子类的f1()方法,这里就是多态的应用。

图4 Parent类中增加f1()方法

图5 Child类重写父类的f1()方法

图6动态确定调用f1()方法

图7调用child的f1()方法

感谢阅读,动一动您的手指,分享给身边的朋友吧!谢谢!

长按识别二维码关注本文公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值