-
JAVA
中类和对象的理解
< br>Java
是面向对象的编程语言,哪么什么是对象?一句话,万物皆对象。只要你
想得到,
无论是实体,还是一些虚拟的事物,都可以称之为对象。换言之,
Java
作为面向对象的编
程语言,意味着可以把任
何形式的内容转化为编程语言进行软件开发。
先说什么是类,
什么是对象,
这样在进行面向对象编程中,
才能有比较完备的面向对象
的编程思想。
既然万物皆对象,
我们编程,
用编程语言来描述对象,
不能为浩繁纷杂每一个对象进行
相应描述,
这就涉及到一个具体到抽象的过程了。
其实我们的语言已经做到这一点了。
我们
平时说道的每一个名词,其实都是对现实世界中的一个个具体的“物
体”(或称为“实体
(
Entity
)
”)
相应的特征和行为抽象出来,
并且
将各种具有相同特征的“物体”分为一个
个的“类(
class
)”,就是我们为每一类事物起的名字。比如:汽车、食物、狗、人这些
词等等。
我们用一个具体的例子来进一步说明“类”
和“对象”之间的联系与区别。以汽车为
例,只要是汽车,都应该有以下一些“属性”<
/p>
:轮子、引擎、方向盘、刹车等等组件,可以
通过一些“方法”来
操作汽车,改变汽车的状态,如加速、转向、减速等,这些都是汽车的
共性。具体到某辆
汽车,它可能有
80cm
的轮子、
40
cm
的方向盘、
A6
引擎,它是一个确
定的
实例。
“汽车”这个名词就是“类”,一辆辆真实的汽车就
是“汽车”这个类的实例化。
我们每天的生活、工作,无时无
刻不在和“对象”打交道
----
衣服、食物、房子、汽车
p>
等。我们仔细想想,就会发现,当我们处理这些对象时,我们不会将这些对象的属性(对象<
/p>
所具有的特点)
和操作分开。
如我们进出
“房间”时,
我们不会将“房门”这个属性和“开
门”这个操作
分开,
它们是联系在一起的。
那么,
面
向对象编程思想力图使得程序和现实世
界中的具体实体完全一致。
这样,
可以让程序员乃至非专业人员更好的理解程序。
所以<
/p>
Java
语言还是很好阅读的。
类和对象是面向对象编程思想中的核心和基础。
类是作为对象的抽象而
存在的,
所有的
对象都依据相应的类来产生,在面向对象的术语
中,这个产生对象的过程称为“实例化”。
前面说了,类可以
看做是对象的抽象,它是用来描述一组具有相同特征对象的。那么,
对象中,最重要的两
种特征内容,就是:
1.
数据:数据
就是描述对象的信息的静态信息了。比如一辆汽车,它的型号,价格,出
厂日期等等,都
是这个汽车对象的静态信息数据。
2.
行为:
行为就是这个对象可以完成的动作、
操作等,
是对象的动态特征。
接上个例子,
汽车可以启动
,行驶,刹车等等,都是这辆汽车的动态特征。
通过这两方面的特征内容,基本上这个对象就可以描述清楚了。
Java
中类就是完全模拟了类的特征内容。在
Java
类的定义规范里面,有两方面内容来
对应类中
的数据和行为:
1.
属性:用来描述
对象的数据元素称为对象的属性(也称为数据
/
状态)
2.
方法:对对象的属性进行的操作称为对象
的方法(也称为行为
/
操作)
Java
中类的声明语法规范(即
如何定义一个标准的
Java
类
)
p>
语法规则:
[< modifiers>]
class
< class_name>
{
[
[
[
}
p>
中括号
[<
??
>
]
中的内容,
说明是可以省略的。
<<
/p>
??
>
尖括号中的内容,是必须做出定<
/p>
义的。其他的内容即关键字和最基本的符号。比如
class
p>
,说明定义了一个类,而不是其他
的
Jav
a
语言组件内容。
下面是简单的说明:
为修饰符,可用的有
public
,
abstract
和
final
等关键字(关键字是
Java
语言中赋
以特定含义、
并用做专门用途的单词,
类名、
< br>方法名和属性名以及变量名不能是关
键字)
,用于说明所
定义的类有关方面的特性。对于各种关键字和它们的含义以及各自的适
用范围,请看后续
的介绍。
class
也是
Java
语言关键字,表明这是一个类的定义。
是类的名字,
如示例中的
“Student”
,
类
名一般使用一个用于表示这个类
的名词来表示;这里就说明定义了一个学生类,用来描述
一组学生对象。
是属性声明部分,
如示例中的
“age”
、
“name”
、
“sex”
、
“grade”
< br>。
具体语法请看后面部分内容。
是构造器声明部分。具体语
法请看后面部分内容。
是方法声明部分,如示例中的
public void
setGrade(int
student_grade)
、
public int
getGrade()
等。具体语法请看后面部分内容。
类中属性和方法的声明定义
类的定义中所包含的数据称为属性
,也称为全局变量,这是相对于局部
变量来讲的,
如示例中的
Student
类中定义了
4
个属性
----nam
e
,
sex
,
grade
,
age
。属性声明的语法
规
则如下:
[<
modifiers>]
其中:
< modifiers><
/p>
为修饰符,可用的有
public
,
p>
private
,
protected
p>
,
final
,
s
tatic
等,用于
说明该属性的一些性质;
< br>
是该属性的数据类型,可以是
任何合法的
Java
数据类型;
p>
是属性名称,属性名称的
< br>首字母一般采用小写方式
。
类的定义中还可以包含方法的声明
,
其语法规则如下:
< modifiers>
{
[< statements>]
}
其中:
< modifiers>
为修饰符,可用的有
public
,
private
,
protected
,
abstr
act
,
static
和
final
,用于说明方法的属性;
是该方
法的返回值类型,可以是任何合法的
Java
数据类型;
是方法名;
是方法的参
数列表,
包括参数的类型和名称,
如有多个参数,
中间用
?,?
号分隔;
<
/p>
是
0~
多行
Java
语句。
具体在类中,
属性的定义和方法的定义是没有顺序强制要求的<
/p>
。但是最好将属性声明
和方法的声明分别放在相对应的位置。这是
一个好的代码习惯。
Java
p>
类中的最重要的部分
——
构造器
在
Java
类中,每个
类都必须至少有一个构造器。可以这么理解,构造器就是
Java
类
中的特殊的方法,所以构造器也常被成为构造方法。如果在程序中没有定义任何的构
造器,
则编译器将会自动加上一个不带任何参数的构造器。
默认
的构造器不带任何的参数,
也没有
“
方
法体
”
。
在
定义好一个类之后,就像“汽车”只是类的一个名词,无法去操作,得指定一辆真实
的汽
车才能去操作一样。
有了
“类”
我们需
要根据类来创建我们要操作的对象也称为
“实例”
,
这就要使用类中的构造器来创建。
构造器就像是
一个规范,
建造出合乎类要求的对象。
比较掉书袋的说法:
p>
构造器是创建
一个类的实例(对象)时需要调用的一个特殊的方法。
利用构造器,可以产生一个类的实例,并且完成实例的初始化
(
initialize
)
。
构造器的语法规范:
(
[
{
[
}
可以看出来,构造器的声明和方法是极为相似的,可以有访问修饰符
modifier
、有自己
的方法名称、有参数列表、有方
法体,因此,可以将构造器当成一个特殊的方法,只需要在
几处特殊的地方注意下,遵守
特别的要求,就是构造器了。
这里需要注意的地方就是:
1.
构造器不允许有返回类型
p>
这个很好理解,一个类中的构造器就是用来创建这个类的一个对象,没有第二个选择,
返回类型的定义就有点画蛇添足了。
2.
它的方法名必须和类名完全一致
这样有个好处,一看构造器的名称,就知道是要构造那个类的对象了。
< br>
3.
调用时机与一般的方法不同
一般的方
法是在需要时才调用,
而构造方法是在创建实例对象时自动调用,
并执行构造
方法的内容。
如果没有声明一个构造方法,
程序会自动为类加入一个无参且什么不做的构造
方法。基于上述特性,
构造方法一般用来对对象的数据成员做初始化的赋值。
4.
不仅普通方法可以重载,构造方法也可以重载。
5.
只要构造方法的参数个数不同,
或是类型不同,
便可定义多个名称相同的构造方法。
现在我们已经完成
Java
的类的声明,现在有了类,就像是有了设计蓝图,就可以根据
蓝图来实现
设计了。
正确的声明了
Java
p>
类,就可以在其他的类或者应用程序中使用该类了,比如创建该类
对
象并访问操作对象成员等。