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

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

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


一、编程思想


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


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


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


面向对象的思想


二、对象的基本概念


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


2,属性:有什么


3,方法:能做什么


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



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


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


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


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




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


1,小对象组成大对象


2,对象间彼此方法调用



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


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


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


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


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


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


三、计算机中的对象


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


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



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


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



计算机中的对象:


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


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


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

image.png


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


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



四、面向对象的特点


1,各司其职


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


2,弱耦合性


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


3,可重用性


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


4,可扩展性


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



五、类的概念


1,对象共性的抽象


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


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


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


3,类是对象的模板


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


image.png


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


相关文章
|
1月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
260 0
|
1月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
86 4
|
1月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
158 5
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
142 1
|
1月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
203 1
|
1月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
146 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
160 1
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
874 37
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
474 4
|
存储 安全 Java
java基础面试题
java基础面试题
95 2
下一篇
oss云网关配置