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 类作为 模板建立起来的。


相关文章
|
7天前
|
存储 Java
Java中判断一个对象是否是空内容
在 Java 中,不同类型的对象其“空内容”的定义和判断方式各异。对于基本数据类型的包装类,空指对象引用为 null;字符串的空包括 null、长度为 0 或仅含空白字符,可通过 length() 和 trim() 判断;集合类通过 isEmpty() 方法检查是否无元素;数组的空则指引用为 null 或长度为 0。
|
7天前
|
安全 Java 编译器
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
|
7天前
|
安全 Java 编译器
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box<T>`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box<T>` 编译后变为 `Box<Object>`,从而实现无缝交互和减少内存开销。
|
27天前
|
Java
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
25天前
|
安全 Java
Object取值转java对象
通过本文的介绍,我们了解了几种将 `Object`类型转换为Java对象的方法,包括强制类型转换、使用 `instanceof`检查类型和泛型方法等。此外,还探讨了在集合、反射和序列化等常见场景中的应用。掌握这些方法和技巧,有助于编写更健壮和类型安全的Java代码。
38 17
|
29天前
|
缓存 Java 开发者
Java字面量详解:概念、分类与使用实例
本文介绍了Java字面量的概念、分类及应用。
49 11
|
1月前
|
Java
java代码优化:判断内聚到实体对象中和构造上下文对象传递参数
通过两个常见的java后端实例场景探讨代码优化,代码不是优化出来的,而是设计出来的,我们永远不可能有专门的时间去做代码优化,优化和设计在平时
32 15
|
1月前
|
Java 数据安全/隐私保护
Java的基础概念(二)
本文介绍了Java编程语言中的运算符和表达式,涵盖算术运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符等。重点讲解了算术运算符的使用,如加减乘除取余,并强调了整数除法和取余的特殊性。同时,详细说明了隐式转换与强制转换的概念及应用场景,以及字符串和字符的拼接规则。通过多个案例演示了不同运算符的实际应用,包括数值拆分、自增自减、三元表达式的使用等。最后简要提及了运算符的优先级,指出小括号具有最高优先级。
|
8月前
|
Java 开发者
Java 面向对象新视界:揭秘子类如何“继承”父类精华,再添“创新”之笔
【6月更文挑战第16天】在Java的面向对象世界,子类继承父类的特性,如`Circle`继承`Shape`,展示“is-a”关系。子类不仅保留父类的`color`和`display`方法,还添加了`radius`属性及定制的显示逻辑。这种继承与创新允许代码复用,增强灵活性和可扩展性,使得构建复杂系统变得更加高效和模块化。通过持续的继承与定制,开发者能构建出一系列独具特色的类,充分展现面向对象编程的力量。
167 57
|
7月前
|
Java 编译器
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
100 2

热门文章

最新文章