Java OOP 思想深度刨析
Java面向对象编程
面向对象编程简称OOP(Object——对象、Oriendted——导向的、Programming——程序设计)
面向对象通俗来讲,就是指使用丰富的对象内容进行的程序设计
OOP的引入
在一个项目中,如果在不同的class中存在相同的方法,这样会使得程序编码效率降低,代码冗余复用性变差。所以提出了一种方式,就是用一个class去封装不同class中相同的方法,然后在使用该方法的时候,创建出一个实例去编码,这样一来程序的编码效率就会提高,也不会出现代码冗余的情况。
POP和OOP
面向过程
设计思路:从上到下,层次化,分解
设计方法:程序=算法+数据结构
特点:相互独立,代码冗余,数据和程序不一致,维护较困难
举例:购买电脑(可以玩吃鸡)——上网或咨询相关人士了解所需配置——根据自己所需配置列出配置单——带着配置单去电脑城找电脑商——咨询价格并付钱——等待电脑组装完成——带回家
面向对象
设计思路:从下到上,对象化,综合
设计方法:程序=对象=数据+方法
特点:模拟客观世界,与人的思维方式相似,代码干练,数据和程序一致
举例:购买电脑(可以玩吃鸡)——找懂电脑的相关人士——告知需求并咨询价格——付钱——等待电脑回家
两者关系
面向对象是基于面向过程的
对象
对象是OOP的核心部分,是实际存在的具体实体,具有明确定义的状态和行为。
对象就是“数据”和“方法”的封装体,其中:数据表示自身的状态,也称作属性;方法表示自身的功能,也称作函数。
在Java编程中可以说是万物皆对象。
Class
class称之为类,在现实生活中,我们常常生活中的事物划分成类,同一类中的事物具有一些相同的特性,以相同的特性和行为定义实体;在Java中,类是具有相同属性和和行为的一组对象的集合。
类和对象的关系
类是描述事物;对象是所描述事物的实例(使用实例名去访问类中成员)
先有类的描述(class),后有描述类的对象(类名 实例名=new 类名();)
属性
生活中事物的特性在类中使用变量来表示,每个对象的每个属性都拥有其特定的值,对象或实体拥有的特征在类中称为属性 。
方法
事物的行为或动作,在类中用方法表示,每个对象都有其功能和行为,对象每一个功能或行为都是一个方法。
OOP三大特性
封装
将某些东西包装在一起,然后以完整的形式呈现出来
隐藏(private)属性、方法或实现细节的处理方式称为封装
封装本质上就是有选择性地隐藏某些重要信息,很大程度上保证了数据的安全性。
继承
关键字:extends
继承就是重用现有的类来生成新类的一种特征
简单讲就是使得新类具有已有类的一些特性,比如现实中孩子就会具有父母的一些特性
在Java中,继承可实现代码的重用。
多态
多态就是指同一方法在不同类中有不同的实现。
抽象
关键字:abstract
当一个事务中的功能没有具体的方法体时,或者是事物无法描述清楚时,称为抽象;
抽象类不能被实例化(不能创建对象);
子类继承抽象类,必须重写抽象类中所有的抽象方法后,子类才能创建对象;
被abstract修饰的方法,必须包含在抽象类当中。(抽象类当中是可以写普通方法)。
接口
关键字:interface
如果事物遇到扩展的功能,则使用接口来解决,实现接口关键字:implements;
接口中只能定义常量和抽象方法(有固定的修饰符格式);
接口不能被实例化;
实现了接口的子类,必须把接口中的所有抽象方法全部重写后,才可以创建子对象;
接口是为了对事物功能的扩展,但是接口的核心思想就是解决多继承问题,使用接口多实现的方式来代替多继承。
API
指一些预先定义的方法,或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。