JAVA中类和对象的理解.doc_第1页
JAVA中类和对象的理解.doc_第2页
JAVA中类和对象的理解.doc_第3页
JAVA中类和对象的理解.doc_第4页
JAVA中类和对象的理解.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论