java面向对象三大特性:封装、继承、多态
一、封装
封装就是把类中的私有属性进行隐藏,对外提供对应的方法来操作属性;
用户不用知道类内部的细节,但可以通过这个类调用实例方法来得到属性和设置属性;
优点:
提高代码的复用性;
减少耦合:能独立的开发、测试、优化、使用和修改;
减轻维护的负担:容易理解,在调试的时候不会影响其他的模块代码;
有效的调节性能:可以通过剖析,确定哪个模块影响了系统的性能;
降低了大型系统的风险:即时整个系统是不可用的,但是这些独立的模块可能是有用的;
以学生类Student为例,对学生的学号、姓名、性别、年龄这些属性进行隐藏,
对外提供一些set和get方法,操作学生类的学号、姓名、性别、年龄。
用户不用知道内部细节,内部使用了String类定义年龄。
二、继承
继承就是一个类通过关键字extends来继承另一个类:
如public class Student extends Person{ },
学生类继承了人类,子类可以继承父类的除构造方法和私有方法的其他成员;
作用:代码重用、复用
单继承
一个子类,只能继承一个父类,java中不支持多重继承
一个父类,可以有多个子类
不继承:
构造方法
私有(private)成员
子类对象
先新建父类对象
再新建子类对象
两个对象绑定,整体作为一个对象
三、多态
多态的定义:指允许不同类的对象对同一消息做出响应。
即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
实现多态的技术称为:动态绑定(dynamic binding)
是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
多态的作用:消除类型之间的耦合关系。
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
多态的好处:
1.可替换性(substitutability)。多态对已存在代码具有可替换性。
例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已
存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。
例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性(interface-ability)。多态是超类通过方法签名,
向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,
尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。