Java基础——对象和类1(面向对象基本概念)

一、编程思想

编程思想:需求——>建立思路——>目标代码

面向过程的思想:自顶向下,逐步求精

不适合用来解决一些比较复杂的问题

面向对象的思想

二、对象的基本概念

1,对象:无论什么都是对象,一切客观存在的事物

2,属性:有什么

3,方法:能做什么

例如,对于一个汽车对象,这个对象有颜色、品牌、价格、 最高时速等属性,有启动、加速、转向、刹车等方法。

对象不是孤立存在的,对象与对象之间会通过某种方式产生联系。

一种方式是方法调用的关系。一个对象可以调用另一个对象的方法,从而在这两个对象中产生关联。即对象的方法使用者又是一个对象。例如,学生对象,可以调用老师对象的“讲课”方法,司机对象可以调用汽车 对象的“行驶”方法,顾客对象可以调用厨师的“做饭”方法,等等。任何一个对象都可能 调用其他对象的方法,也可能提供方法供其他对象调用。

另一种方式是属性组合的方式:一个对象的属性,可能又是一个对象。例如,把主机、 键盘、鼠标等等小对象,皆可看作是电脑这个大对象的属性;以若干个学生对象作为属性, 组成了班级对象;若干个书本对象,组成图书馆对象等等。

通过这两种联系方式,我们可以把一些功能相对简单的对象组织在一起,形成复杂的系统。

客观的世界是由对象组成的

1,小对象组成大对象

2,对象间彼此方法调用

例如,现实生活中,企业这个对象,往往是一个非常复杂的系统。然而,企业中每一个对象,每一个员工,要解决的问题总是相对简单的。例如,在一个软件企业中,程序员要解 决的问题就是编程,会计解决的问题就是算账,销售解决的问题就是获得订单,等等。但是, 虽然每个员工要解决的问题都相对简单,但是当大量功能简单的对象组合在一起之后,就能 形成一个非常复杂的企业系统。

解决客观问题:面向对象的思想

1,把解决问题所需的对象准备好

2,对象如何配合完成需求

例如,假设我们要从北京出发到上海。为了完成这个任务,首先要做的,是应当确定,用什 么方式去上海,是坐飞机?坐火车?还是自己开车?等等。

这是一个选择交通工具的过程,也就是我们在选择合适的对象来解决问题的过程。在这 个例子中,我们希望能够选择一个对象,这个对象能有一个“交通运输”的方法。很显然, 汽车、火车、飞机,都存在这个“交通运输”方法。我们可以根据实际的情况,来选择不同 的交通工具,并调用其“交通运输”方法,从而完成从北京到上海这个目标。如果我们选择 了“飞机”对象,那么就需要调用“机票代理人”对象的“卖机票”方法,来获得一个“机 票”对象。再调用“出租车”对象的“开车”方法,到达机场。利用手中的机票,调用“飞 机”对象的“登机”方法,“飞行”方法。从而到达目的地。

三、计算机中的对象

计算机需求来源于客观世界

解决计算机问题,同样可以采用面向对象的思想

设计电子商务网站,这是一个计算机领域的问题。但是,我们可以看到,这个问题的提出,是与现实世界紧密联系的。也就是说,计算机编程要解决的问题,一定来自于现实生活。例如,软件行业中有 word 软件,是为了解决人们处理文档的问题;有 excel 软件,是为了解决人们统计数据以及做报表的需求;有QQ 软件,是为了解决人们交流和沟通的需求„„ 等等。

既然计算机世界的问题都来源于现实世界,那最好的办法,就应当是让计算机来模拟现 实世界。由于现实世界是一个面向对象的世界,因此,很自然的,我们就希望在计算机世界中,也引入面向对象的思想,这样,程序员就可以利用现实生活中的经验,更好的解决计算机的问题。

计算机中的对象

1,JVM中连续的储存空间(数据)

2,代表生活中的对象,生活中的对象在计算机中的抽象

通过抽象,我们就把现实中的对象,变成了计算机中的对象。 例如,我们对现实生活中的学生对象进行抽象,形成了计算机中的学生对象。抽象的时 候,保留了学生对象的这样几个属性:姓名、年龄和学生成绩。因此,对于一个计算机中的 学生对象而言,实际上就是在内存中的一块数据区域。这块区域中,有一个字符串,用来表 示姓名,有一个整数用来表示年龄,有一个 double 类型的数,用来表示学生的成绩。在内 存中的表示如下:

在内存中,我们分配出了一块数据区域,在这块区域中,包含了抽象出的学生对象的属 性。这些数据作为整体出现,代表生活中的学生对象。因此,从本质上说,计算机中的对象, 就是在内存中的一块数据区域。

通过把现实生活中的对象抽象成计算机中的对象,我们就可以在计算机世界中模拟出跟 现实世界中一样的面向对象的世界。这样,我们在进行编程的时候,就可以利用这种思想来解决问题。

四、面向对象的特点

1,各司其职

利用面向对象的思想,完成一个需求,可能会由多个对象共同参与。而组成系统的每个 6 对象,其功能应该单一。这就是对象的“各司其职”。

2,弱耦合性

弱耦合性指的是,让对象和对象之间的联系尽可能的弱。这样有什么优点呢?如果一个 对象跟周围的联系比较弱,那么这个对象就可以很容易的被替换。

3,可重用性

所谓的可重用性,指的是对于类似的功能,不同的系统可以重复使用相同的代码。这样, 有些通用的功能,程序员写了一遍之后,在遇到类似的功能之后,不需要从头开始开发,只 需要对这些通用的功能进行使用就可以了。

4,可扩展性

可扩展性指的是,在不修改原有系统的前提下,对系统的功能进行扩展。在面向过程的 编程方式中,如果要增加系统的功能,则大部分的过程就都必须要改变。

五、类的概念

1,对象共性的抽象

例如,现实生活中,存在许许多多的狗“对象”(小白、大黄、旺财、来福„„)。对于 一个不认识“狗”的婴儿来说,当他见到越来越多的狗对象之后,慢慢的就能逐渐总结出, 这一类对象的特点:四条腿,会吃会跑会叫,会摇尾巴„„于是,慢慢的,他就认识了狗。 也就是说,在他的脑子中,形成了“狗”这个概念,狗这个“类”就包含在他的脑子中了。 也就是说,当人面对大量的对象之后,慢慢的会把对象的共性进行抽象,从而形成了 “类”。换句话说,类是对客观事物的总结和抽象。

2,客观对象在人脑中的主观反映,类是人对对象的认识

与此同时,我们注意到,“类”是在人的脑子中形成的一个概念,也就是说,类是在人 脑子里的,而不是一种客观事物。我们可以认为,类就是客观事物在人脑中的反映。

3,类是对象的模板

而在计算机世界中,有另外一层含义:类能够作为创建对象的模板。也就是说,在计算 机中,如果定义了一个类,则可以利用这个类创建多个对象。

如上图所示,我们定义了一个 Student 类,规定了 Student 对象具有两个属性,String 类 型的姓名和 int 类型的年龄。之后创建四个对象,很显然,这些对象都是以 Student 类作为 模板建立起来的。

Java基础——对象和类1(面向对象基本概念)相关推荐

  1. 一天一个Java基础——对象和类

    1.在Java中你所做的全部工作就是定义类,产生那些类的对象,以及发送消息给这些对象 2.可以在类中设置两种类型的元素:字段(也被称作数据成员)和方法(也被称作成员函数) 3.字段可以是任何类型的对象 ...

  2. Java基础----对象与类

    一.面向对象程序设计概述 面向对象程序设计(oop) 二.类 类(class)是构造对象模板或蓝图 由类构造(construct)对象的过程称为创建类的实例(instance) 封装是处理对象的一个重 ...

  3. UML2面向对象分析与设计 -- 面向对象思维(概念、面向对象技术的发展历史、对象和类、面向对象技术的相关原则:抽象 封装 分解 泛化 多态 分层 复用)

    文章目录 1. UML2面向对象分析与设计 学习目标 2. 面向对象思维 2.1 学习目标 2.2 什么是面向对象 2.3 面向对象技术的发展历史 2.4 面向对象技术的优势 2.4.1 便于沟通:在 ...

  4. 【狂神说笔记—— Java基础07-常用类】

    Java基础07-常用类 Object类 大家都知道Object是所有类的父类,任何类都默认继承Object. 理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类 ...

  5. JAVA基础知识(四)面向对象基础

    文章目录 JAVA基础知识(四)面向对象基础 1. 类 2. 访问权限修饰符 3. `static`修饰符 3.1 静态代码块 4. `new`一个对象 5. 方法 5.1 `this` 5.2 方法 ...

  6. Java基础复习-常用类

    Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...

  7. Java基础学习——第六章 面向对象编程(下)

    Java基础学习--第六章 面向对象编程(下) 一.关键词:static 1. static关键字的引入 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new ...

  8. Java基础:String类

    相关阅读 Java基础:String类 Java字符串格式化 Java基础:正则表达式 1. 概述 字符串是由多个字符组成的一串数据(字符序列),字符串可以看成是字符数组. 在实际开发中,字符串的操作 ...

  9. 多重继承_Python 和 Java 基础对比 10 —— 类的封装、继承和多态

    @Python大星 一.Python 类的封装.继承和多态 封装 继承 Python 支持多父类的继承机制,所以需要注意圆括号中基类的顺序,若是基类中有相同的方法名,并且在子类使用时未指定,Pytho ...

  10. 一文带你深入理解【Java基础】· 枚举类

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

最新文章

  1. 数据结构之【队列】的基本操作C语言实现
  2. 李飞飞最新论文:用算法判断政治倾向(附论文链接)
  3. 嵌入式面试C语言试题
  4. php安装redis扩展详细步骤 不会可以加QQ
  5. 一些知识点的初步理解_6(核函数,ing...)
  6. Javascript 笔记与总结(2-3)Javascript 运算符、控制结构与对象操作
  7. 使用maven构建项目候,jar包错误的解决办法
  8. 方正高影仪安装方法_铝合金门窗是怎么安装的?
  9. oracle create tablespace、user and grant
  10. CoreException: Could not get the value for parameter compilerId for plugin execution default-compile
  11. 【Excel】如何用SUMIF实现SUMIFS的功能
  12. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.解决办法
  13. java订单重复提交_java表单重复提交常用解决办法
  14. 翻译:Swift中的Operations和OperationQueues入门
  15. 树莓派安装win10
  16. 阿里云的DMZ区网络
  17. GuzzleHttp使用
  18. ANC主动降噪,FFT方案与FxLMS方案比较
  19. ElasticSearch教程——创建索引、类型、文档
  20. 服务器宝塔Error: connect ETIMEDOUT

热门文章

  1. 安全测试(BurpSuite)常见检查点
  2. WinRar DOS命令大全带详细参数rar/zip/7z压缩文件解密
  3. html dom onblur,html的DOM中Event对象onblur事件用法实例
  4. 数据中台之血缘篇:Atlas 详解
  5. python Beautifulsoup4爬取凡人修仙传仙界篇连载中文章并生成txt
  6. NLP学习路径(三):NLP中文分词技术
  7. 数据库性能优化--超详细
  8. 提交您的博客到各大网站
  9. 用于 Linux* 的英特尔® 图形驱动程序 以后买本本的时候,先注意一下
  10. mysql中with...as用法