Java语言是面向对象的。这里说到面向对象,就自然而然的引出了另一个概念---面向过程。
1、关于面向对象与面向过程的概念对比
面向过程:面向过程是以函数为基础的,强调完成各种操作的过程。
面向对象:面向对象以对象为基础,完成各种操作主要强调对象、结果面向对象的编程语言,是将功能封装进对象,强调具备某些功能的对象,其实面向对象的语言是基于面向过程的,因为即使是调用某个对象,被调用的对象的方法也是通过面向过程的方式编写的。
2、面向对象的特征
面向对象具有封装性(Encapsulation) 、继承性(Inheritance) 、多态性(Polymorphism) 。
1)封装性
A、所谓封装指的是隐藏对象的属性以及实现细节,仅对外提供访问方式,将不需要对外提供的内容进行隐藏,把属性隐藏对外提供访问方式
B、封装的优缺点
优点:将变化隔离、便于使用、提高重用性、提高安全性
缺点:将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度!
C、封装的实现形式
a、使用访问权限修饰符private
b、定义一个Java类与Java的方法就是最简单最常见的面向对象的封装操作,这些操作符合隐藏实现细节,提供访问方式的思路
2)继承性
A、继承是指:多个类具有共同的属性(成员变量)与行为(成员方法)的时候,将这些共同的部分抽取出来定义到一个公共的类中,其他及各类可以与这个公共的类形成继承关系,从而在多个类中不需要重复定义公共部分!
公共的类称为:父类、超类、基类
其他的几个类称为:子类、派生类(子类可以直接访问父类的非私有成员!)
B、Java继承的特点
Java只存在单个继承不存在多个继承,即:一个类只能有一个父类(C++存在多个继承)
Java可以多层继承,多重继承
C、Java继承的优缺点
优点:继承能很好的提高复用率、继承是实现多态操作的前提
缺点:继承使得多个类之间具有了子父类关系,当一个类存在多个子类的时候,如果父类发生变化,那么这些子类会跟着一同变化,造成类与类之间的“强耦合”关系!
3)多态性
A、所谓多态是指:针对引用数据类型,对象在不同时刻表现出来的不同状态称之为多态,所谓的不同时刻
一般指:编译时期与运行时期
B、多态的形成条件
a、具有继承或者实现关系,继承是对普通Java类而言,实现是对Java接口而言
b、子类对父类的的方法进行了重写或者实现,Java的多态体现在方法上,既然是重写就表示子父类的方法体不同!否则没有实际意义!
c、需要使用父类的引用指向子类的对象,接口的实现指向实现类的对象
注:只具有a、c两个条件也是可以构成多态的,但是这样的多态没有实际意义,多态是针对Java类的方法的假如没有重写父类方法或者实现接口的方法,这样的多态不具有实际操作,没有意义!