Java中的类和对象 |
|
在java语言里,对象是一组描述对象的属性和操作方法的集合,其中属性表明对象的状态,方法表明对象的行为。类是对象的定义。一个对象具有哪些属性和方法,由类来决定。从编程角度看,类是一种复合数据类型,它封装了一组变量和方法(函数)。 人们通过观察对象的属性和行为来了解对象,对象的属性描述了对象的状态,对象的行为描述了对象的功能。对象一般有如下特性: (1)有一个名字以区别于其他对象。 (2)有一些状态用来描述它的某些特征。 (3)有一组操作,每个操作决定了对象的一种功能或行为。 这样,可以让程序员乃至非专业人员更好地理解程序。它涉及一个从“具体”到“抽象”,再从“抽象”到“具体”的过程。所谓“从‘具体’到‘抽象’”,也就是将现实世界中的一个个具体的“物体”(或称为“实体(Entity)”)相应的特征和行为抽象出来,并且将各种具有相同特征的“物体”分为一个个的“类”,如“汽车”类、“人”类、“房子”类等;而所谓“从‘抽象’到‘具体’”,就是将上面抽象出来的对应物体的“类”,使用具体的计算机语言来描述,比如,使用Java语言来描述“汽车”类、“人”类、“房子”类等,和使用C++语言来描述这些类是有区别的。 正如前面所述,“类”相对于现实世界中的“实体种类”(Entity Category),如汽车、人类、房子等,它是现实生活中某类实体的抽象。而对象,或者实体(Instance),指的是这些种类中的一个个具体存在,如Benz-600、Santana-2000等具体的汽车,或者张三、李四等具体的个人。类和对象是面向对象编程思想中的核心和基础。类是作为对象的蓝图而存在的,所有的对象都依据相应的类来产生,在面向对象的术语中,这个产生对象的过程称为“实例化”。 用一个具体的例子来进一步说明“类”和“对象”之间的联系与区别。以汽车为例,只要是汽车,都应该有以下一些特性:轮子、引擎、方向盘、刹车等组件,可以通过这些组件来操作汽车,改变汽车的状态,如加速、转向、减速等,这些都是汽车的共性。具体到某辆汽车,它可能有80cm的轮子、40cm的方向盘、A6引擎,它是一个确定的实例。使用“汽车类”这个蓝图,就可以生产出一辆辆的汽车“实例”。这和盖房子一样,根据一张图纸,可以盖出任意数量的房子,而这些房子都有一样的特征。 如果说一切都可以成为对象,那么是什么决定了某一类对象的外观和行为呢?类是对某个对象的定义,用来描述一组具有相同特征对象的: (1)应包括的数据。 (2)行为特征。 类包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上类本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。一个类能从这个类在内存中创建多个相同类型的对象。因此,类应该包括两个方面的内容。 (1)属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)。 (2)方法:对对象的属性进行的操作称为对象的方法(也称为行为/操作)。 Java语言中类的声明,也称类的定义,其语法规则如下: [< modifiers>] class < class_name> { 其中各组成部分的含义如下: <modifiers>为修饰符,可用的有public、abstract和final等关键字(关键字是Java语言中赋以特定含义,并用做专门用途的单词,类名、方法名和属性名及变量名不能是关键字),用于说明所定义的类有关方面的特性。对于各种关键字和它们的含义及各自的适用范围,请看后续章节的介绍。 类成员有3种不同的访问权限: (1)公有( public关键字修饰 )类成员可以在类外访问。 (2)私有( private关键字修饰 )类成员只能被该类的成员函数访问。 (3)保护( protected关键字修饰 )类成员只能被该类的成员函数或派生类的成员函数访问。 class关键字表明这是一个类的定义,将告诉你一个新类型的对象看起来是什么样的。 <class_name>是类的名字,类名一般使用一个用于表示这个类的名词来表示。 <attribute_declarations>是属性(Attribute)声明部分。 <constructor_declarations>是构造器(Constructor)声明部分。 <method_declarations>是方法(Method)声明部分。 可以将上述的“学生”实体的基本特征当成“学生”类的属性,然后,再定义一些方法来对这些属性进行操作。这里,将这些操作属性的方法定义得很简单:每个属性都有相应的设置(setter)和获取(getter)方法,设置方法将传入的参数赋给对象的属性,而获取方法取得对象的属性。 源文件:Student.java public class Student { 热点链接: |