JAVA为什么被称为面向对象的编程语言

一、什么是面向对象

学过JAVA的人都知道,JAVA是一个面向对象语言,那什么是面向对象呢?

我们常见的编程范式有命令式编程,函数式编程,逻辑式编程,而面向对象编程也是一种命令式编程。

命令式编程式面向计算机硬件的一种抽象,有变量(存储单元),赋值语句(获取存储指令),表达式(内存引用和算术运算)和控制语句(跳转指令),命令式程序就是对一个冯诺依曼机的指令序列的抽象,面向对象是对我们现实世界模型的一个抽象,之后在映射到冯诺依曼机的指令序列。

面向对象的基本特性

如果只是用变量,赋值语句,表达式,控制语句去构建现实世界模型的话会非常困难,所以面向对象的出现的根本原因就是就是为了解决这个问题,以及这个问题放在工程生产中产生的新的更为复杂的问题。

面向对象让我们从指令代码操作变量转变为通过指令操作对象。 当我们理解了这个以后再去看面向对象的基本特征:

抽象

封装

首先抽象就是建立一个对现实模型的抽象,封装就是将变量,赋值语句,表达式,控制语句进行组合来描述上面的抽象,并且将他们“打包”,看成一个原子结构,之后的程序逻辑都是围绕着这个原子结构进行的。(可以说的简单一些,就是把具体事物的共通性抽象出来,然后用编程语言来阐述它,把它封装成一个对象)

最后,面向对象的编程就是将原来的 ”模式一“ 改变为 ”模式二”

模式一:程序 = (赋值语句+表达式+控制语句)+ 变量

模式二:程序 = 对象 + 对象(对象之间的调用)

“万物皆对象”

面向对象的高级特性

对象之间的关联关系

抽象,封装只是对现实模型和冯诺依曼机之间基本的映射关系,而现实世界中模型与模型之间还存在很多关系,如继承、组合、依赖等。

而维护这些关系也成为面向对象语言的一个特性,并且有相应的语法支持。

1.继承is-a组合:一个类继承具有相似功能的另一个类,根据需要在所继承的类基础上进行扩展。

优点: 具有共同属性和方法的类可以将共享信息抽象到父类中,增强代码复用性,同时也是多态的基础。

缺点: 子类中扩展的部分对父类不可见,另外如果共性比较少的时候使用继承会增加冗余代码。

2.组合has-a组合:has-a组合是在一个类中引用另一个类作为其成员变量。

优点: 可扩展性和灵活性高。在对象组合关系中应优先考虑has-a组合关系。

缺点: 具有共性的类之间看不到派生关系。

当你对这些有概念的时候,你就会清楚为什么JAVA语言的精华或者说面向对象语言的精华就是老三样:封装、继承、多态

二、理解对象

面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。面向对象的开发方法将软件系统看成各种对象的集合,接近人的自然思维方式。

※ 对象是对问题领域中事件的抽象。对象具有以下特性:

1)万物皆为对象。问题领域中的实体和概念都可以抽象为对象。例如学生,成绩单、教师、课和教室。

2)每个对象都是惟一的。正如世界上不存在一模一样的叶子。

3)对象具有属性和行为。

例如小张,性别女,年龄22,身高1.6m, 体重40kg, 能够学习,唱歌。小张的属性包括姓名、性别、年龄、身高和

体重,行为包括学习、唱歌。

例如一部手机,牌子是诺基亚、价格是2000元,银白色,能够拍照、打电话和收发短信等。这部手机的属性包括品

牌类型type、价格price和颜色color,行为包括拍照takePhoto(),打电话call(),收发短信receiveMessage()和发短

信sendMessage().

4)对象具有状态。状态是指某个瞬间对象的各个属性的取值。对象的某些行为会改变对象自身的状态,即属性的取值。

例如小张本来体重为40kg,经为减肥后,体重减到35kg.

肥胖状态: 40kg

|

减肥行为

|

肥胖状态: 35kg

5)每个对象都是某个类的实例。(内存中开辟区储存特定的数据:是类的具体体现)小张和小王都属于学生类、中国和美国都属于国家类、中文和英文都属于语言类。

. 类是具有相同属性和行为的对象的集合。

. 同一个类的所有实例都有相同属性,但属性取值不一事实上相同,但是它们的状态不一定相同。例如小张和小王都属于学生类,都有姓名、性别、年龄、身高和体重这些属性,但是他们的属性取值不同。

. 同一个类的所有实例都有相同行为,意味着它们具有一些相同的功能。

三、JAVA中面向对象的体现

对象构建:

类——》JVM类构建对象(属性的构建初始化,方法的构建)——》对象——》测试(方法和特征的调用)

exc:

Student

学号 姓名 性别 年龄 班级 身高 体重 地址

行为:学习 吃饭 睡觉

教务系统

Student

学号 姓名 性别 年龄 班级

体检中心

Student

学号 姓名 性别 年龄 班级 身高 体重

//特征(属性)的声明

修饰符 类型 属性名[=属性值];

class Student{

public long id;

public String name;

public boolean gender;

public int age;

}

//构建行为

修饰符 返回类型 方法的名字(参数args…){}

行为 方法的构建2种

public void 方法名(参数…){}

public Object 方法名(参数…){

return object;

}

看完这么多,你应该对JAVA中的面向对象已有了模糊的概念,让你在以后的学习道路上走得越来越远,虽然这篇文章给予你的帮助不大,但是可以让你有所收获我就很开心了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190725A05SJR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券