面向对象的三大特性

来源:互联网 发布:js触发后台事件 编辑:程序博客网 时间:2024/06/08 04:05

面向对象的三大特性:
一、封装

封装是为了保护类的内容。为保证某些属性或者方法不被外部看见,故用private(私有的)关键字说明某些属性或者方法,如果要访问被封装的属性,则要用编写setter getter方法实现。封装性在Java中有多种表现形式,private只是最基本的一种形式,这种形式比较常见。如图所示。
封装例子

二、继承

继承允许创建分层等级的类,继承可以理解成一个对象从另一个对象获取属性的过程。例如:A类是B类的父类,B类是C类的父类,则B类和C类都拥有A类的属性和方法。在Java中,一个子类只能有一个父类,也就是说类的继承是单一继承的,但一个父类可以拥有多个子类。
extends关键字:决定了一个对象和另一个对象是否是IS-A(是一个)关系。
继承例子
如图所示,Wind类就是Instrument类的子类

所有Java的类均是由java.lang.Object类继承而来的,所以Object是所有类的祖先类,而除了Object外,所有类必须有一个父类。

三、多态

多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
(简单例子:坐公车时,一个男的靠在你的肩膀,你可能不爽,但是如果一个美女靠在你的肩膀你就很乐意,这就是多态的表现。)

多态存在的三个必要条件:
1.要有继承。
2.要有重写。
3.父类引用指向子类对象。

多态的好处:
1.可替换性。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
4.灵活性。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
多态例子
如图,in.paly()方法和in.blow()方法就是一种多态的体现。

1 0