`

Java编程那些事儿60——对象

阅读更多

Java编程那些事儿60——对象

郑州游戏学院 陈跃峰

出自:http://blog.csdn.net/mailbomb

8.3 对象

对象(Object)是面向对象技术的核心,按照面向对象的思考方式,现实中的每个实体都是一个对象,比如一个人、数据库中的一张表等,总结起来,就是面向对象技术中的经典语句——万事万物皆对象。

8.3.1 什么是对象?

其实面向对象技术只是提供了一种思考的方式,其思考方式就是把一个复杂的结构看成是一个整体,这样可以降低认知的复杂性。比如认识一个电脑,按照面向对象的认知方式,就是先把电脑分成一个个的对象:显示器对象、硬盘对象、CPU对象等等,然后再一个一个的进行认知。

同时面向对象技术也是一种设计方式,其设计方式是把一个负责的模块划分为一个个小的模块分开进行设计,这样可以降低设计的复杂性。比如设计一个电脑,按照面向对象的设计方式,就是把电脑分成一个个的对象:显示器对象、硬盘对象、CPU对象等等,然后再一个一个的进行设计。

正因为面向对象无论在认知和设计方面都降低了复杂性,所以在程序设计语言中得到了广泛的应用。其实也就是是对现实已存在的内容的升华,所以面向对象存在于生活的很多方面,并不是计算机程序设计领域里的“阳春白雪”。

在语法角度来看,对象就是一个变量,只是该变量比较复杂,其内部既包含属性(数据),也包含方法(功能)。在Java语言中,把复合数据类型(包括数组、类和接口)的变量都称作对象。所以对象的概念相对来说,就显得跟具体了。

每个对象中存储类中对应属性的数值,或者从数据角度来理解对象的话,也可以把对象看作是类似C语言中结构体变量类似的结构。

下面来介绍一下Java语言中对象相关的语法。

8.3.2 对象的语法

对象相关的语法主要包含四个部分:对象的声明、对象的初始化、引用对象中的属性和引用对象中的方法。

例如,有如下一个类的代码:

public class Box{

/**长度*/

int length;

/**宽度*/

int width;

/**高度*/

int height;

public Box(){

length = 10;

width = 10;

height = 10;

}

public Box(int l,int w,int h){

length = l;

width = w;

height = h;

}

/**求体积的方法*/

public int volume(){

return length * width * height;

}

}

8.3.2.1 对象的声明

对象的声明,就是声明一个变量,其语法格式和变量声明的语法完全相同,格式如下:

数据类型 对象名;

这里要求数据类型必须为复合数据类型,基本数据类型声明的结构只能称为变量,而不能称为对象。

示例代码:

Box b;

这里声明了一个Box类型的对象b,该对象在内存中不占用存储空间,其值为null。当然声明对象时也可以采用如下格式:

Box b,b1;

8.3.2.2 对象的初始化

由于只声明的对象在内存中没有存储空间,所以需要为对象在内存中申请空间,并初始化各个属性的值,这个过程称作对象的初始化。

对象的初始化,都是通过直接或间接调用构造方法实现。对象的初始化可以和对象的声明写在一起,也可以分开进行书写,其语法格式如下:

对象名 = new 构造方法(参数);

例如:

Box b = new Box();

Box b1;

b1 = new Box(2,3,4);

其中对象b使用Box类中不带参数的构造方法进行初始化,按照Box类的结构,对象b中每个属性的值被都被初始化为10。而对象b1使用Box类中带参数的构造方法进行初始化,依据构造方法的结构,依次指定对象b1中的长、宽、高依次是234

在初始化对象时,调用的构造方法必须在类中声明过,否则不能调用。因为类名和构造方法的名称相同,所以名称一般不容易发生错误,在实际使用时注意参数列表的结构也需要匹配。

有些时候,因为某些原因,把构造方法隐藏起来,这个时候可以使用其它的途径来创建对象,例如使用某些方法的返回值进行初始化等。

对象在初始化以后就可以进行使用了。

8.3.2.3 引用对象中的属性

对象是一个复合变量,很多时候需要引用对象内部的某一个属性,其语法格式为:

对象名.属性名

该语法中“.”代表引用,使用该表达式可以引用对象内部的属性,则该表达式的类型和该属性在类中声明的类型一致。

例如:

b.width = 5;

该语法中,b是对象名,width是对象b中的属性,因为在类Boxwidth属性的类型是int型,则该表达式的类型也是int类型,在程序中可以把该表达式看成是int类型的变量进行实际使用。

而在实际的面向对象程序中,一般都避免使用对象直接引用属性(使用访问控制符实现访问限制),而替代的以gettersetter方法进行访问。

8.3.2.4 引用对象中的方法

如果需要执行对象内部的功能,则需要引用对象中的方法,也就是面向对象术语中的“消息传递”,其语法格式如下:

对象名.方法名(参数)

这里“.”也代表引用,使用该代码可以引用对象内部的方法,该语法中的参数必须和引用方法的声明结构匹配。

例如:

int v = b.volume();

这里引用对象b中的volume方法,实现的功能是求对象b的体积,并且把求得的体积赋值给变量v

在实际的项目中,通过引用对象中的方法实现项目中信息的传递以及功能的实现,通过对象和对象之间的关联,构造成一个有机的系统,从而代表实际项目中标的各种需求。

对象相关的语法就介绍这么多,在后续的学习中将经常用到。

8.3.3 对象的存储形式

对象是一个复合数据类型的变量,其存储方式和一般变量的存储方式也不相同。在Java的执行环境中,存储区域一般分为两类:

l 栈内存

该区域存储基本数据类型

l 堆内存

存储实际的对象内容。

而实际的对象存储比一般变量复杂,对象的存储分为两部分:对象的内容、对象内容的起始地址。

分享到:
评论

相关推荐

    Java编程那些事儿

    ### Java编程那些事儿 #### 程序设计概述与核心要素 **程序设计**,作为一项专业技能,涉及将现实世界的问题转化为计算机可执行的指令序列。本文将围绕《Java编程那些事儿》这本书的部分内容,深入浅出地探讨程序...

    java初级入门

    **1.1 Java编程那些事儿1——序言** 本章节主要介绍了作者撰写这本书的目的和背景,旨在帮助编程初学者更好地理解和掌握Java编程的基础知识。书中强调了通过通俗易懂的语言来解释复杂的概念,并计划覆盖以下核心...

    21天学通java

    3. **《JAVA编程那些事儿》电子书**: - 通过讲述真实的编程故事来传授经验和教训,有助于开发者避免常见错误并提高工作效率。 ### 总结 以上资源覆盖了Java编程的各个方面,从基础知识到高级主题,从理论到实践...

    java 程序员上班那点事儿

    【标签】:“java 程序员”标签明确指出了内容的核心——与Java编程语言和Java程序员的工作相关。Java是一种广泛使用的面向对象的编程语言,用于开发跨平台的应用程序,尤其在企业级应用中占有重要地位。 【压缩...

    Java程序员上班那点事儿

    ### Java程序员上班那点事儿——理解与解析 #### 前言 《Java程序员上班那点事儿》一书深入探讨了Java程序员职业生涯中的各种实际问题,包括但不限于职业规划、技能匹配、行业现状等方面。本文将从书中提到的核心...

    租房系统静态页面供java初学者用来学习

    2. **Java JSP**:JavaServer Pages技术用于服务器端编程,与前端HTML页面结合,处理动态内容需求。 3. **静态页面与动态页面**:静态页面只包含预定义的内容,不进行服务器交互;动态页面根据用户请求动态生成内容...

    TRISHA:机器人教育那些事儿! Penn Apps 2014 年秋季

    机器人教育那些事儿! Penn Apps 2014 年秋季 作者:迪恩·威廉米、索耶·布鲁克斯、卡罗琳·沙利文、克里斯蒂娜·索里斯 TRISHA(Android 上的学校和家庭智能教学机器人)是一款旨在帮助学生学习编程和机器人技术的...

    程序员那点儿事儿

    标题和描述中的知识点主要围绕着IT行业的核心领域——软件开发,特别是从个人角度出发,探讨了成为一名合格且优秀的程序员所需要具备的素质、态度以及必备的知识体系。以下是对这些知识点的详细解析: ### 一、软件...

    庄晓丹:基于Clojure构建的移动云平台——我的Clojure实践思考

    Clojure是一种现代的Lisp方言,运行在Java虚拟机(JVM)之上,也被编译为JavaScript用于浏览器端。由于其函数式编程的特点和并发处理能力,Clojure在构建可靠的、易于扩展的分布式系统方面具有优势。 - AVOSCloud...

    flink-1.12.0-bin-scala_2.11.tgz

    Scala是一种多范式的编程语言,与Java API相比,它的语法更加简洁,且更适合函数式编程。 8. **部署与运行**:Flink可以本地运行,也可以在分布式环境中如YARN、Kubernetes或独立集群部署。"bin"目录下通常包含启动...

Global site tag (gtag.js) - Google Analytics