您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > Java程序设计修改-ch03
本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|通过类和对象来组织和构建程序。类包括类的声明和类的主体。类的主体包括成员变量和成员方法。类的主体中还包括一个与类名相同无返回值的特殊方法,这就是构造函数。构造函数用来对对象进行初始化。有些方法在使用时需要为其传送参数,this引用可以把当前对象作为参数传递到方法中。类设计好以后,就可以用来定义对象,对象是一种引用类型,存放的是实际对象的内存地址。使用对象名来访问对象的成员变量和方法,以实现对对象的操作,完成程序的功能。包是类的组织结构。包主要用来管理Java中的类并提供访问控制。本章要点类的定义与对象的创建构造方法的使用this引用包的访问本章难点类的定义构造方法的使用学习目标掌握类的定义与创建掌握构造方法的使用了解包的访问3.1类的定义3.1.1类和对象的关系类(Class)是一种复杂的数据类型,它是将数据和与数据相关的操作封装在一起的集合体。类是普通数据类型的扩展,它不但包含数据,还包含了对数据进行操作的方法(method)。方法反映的是数据的行为而不是数据本身。对象(Object)是类的实例,当程序运行时,对象占用内存单元。对象与类的关系就像变量与类型的关系一样。例如:如果把“人”看成是一个抽象的类,我们每一个具体的人,就是“人”类中的一个实例,即一个对象,每个人的的姓名、年龄、身高、体重等特征可作为“人”类中的数据,吃饭、走路、工作等行为作为类的方法。Java中的所有数据类型都是用类来实现的,Java语言是建立在类这个逻辑结构之上本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|的,类是Java的核心。3.1.2类的定义格式1.类的声明格式Java类的定义格式分为两部分:类声明和类主体。其格式如下:类声明{类主体}类声明中包括关键字class,类名及类的属性。类声明的格式如下:[修饰符]class类名[extends超类][implements接口名]类主体是Java类的主体部分,完成变量的说明以及方法的定义及实现。在类中,用变量来说明类的状态,而用方法来实现类的行为。包含类主体的类结构如下:类声明{成员变量的声明成员方法的声明及实现}2.声明成员变量Java类的状态用成员变量来表示。声明成员变量必须给出变量名及其所属的类型,同时还可以指定其他特性。声明格式如下:[修饰符]变量类型变量名3.声明成员方法类的行为由它的方法实现,其他对象可以调用对象的方法来得到该对象的服务。方法的声明与实现也可分为两部分:方法声明和方法体。声明成员方法的格式如下:[修饰符]返回值类型方法名([参数列表])[throws异常类]{方法体}方法都有一个返回类型,如果一个方法不返回任何值,则它必须有一个void的返回类型声明。如果一个方法具有返回值,则在方法体中使用return语句把一个确定的值返回给调用该方法的语句。return语句的一般格式如下:return值或表达式;参数表由类型声明和参数名组成,参数名之间由逗号分开,若方法无参数,则参数表为空。方法的主体称为方法体,它是成员方法的实现部分。方法体包含在一对大括号中,即使方法体没有语句,一对大括号也是必不可少的。在方法体中也可以声明变量,但方法体中声明的变量只是属于方法的局部变量,而不是类的成员变量。【例3_1】类定义示例。classExam3_1{inti=10;publicvoidprintI(){System.out.println(i=+i);}}程序中我们定义了一个类,名字叫做Exam3_1,在这个类中我们定义了一个成员变量i,一个成员方法printI(),这就完成了一个最基本的类的定义。3.2方法方法是类的成员,它与类的成员变量一起被封装在类中,并在类中实现。方法的声明格式已经在3.1节中给出了。在使用方法时我们会遇到有返回值的方法和无返回值的方法,以及有参数的方法和无参数的方法。3.2.1方法的返回值方法的返回值类型可以是基本数据类型也可以是对象,如果没有返回值,就用void来描述。例如,main方法就没有返回值,而且必须没有返回值。如果一个方法有返回值,则可以在方法体中使用return语句将值返回,需要注意的是方法的返回值的类型必须和return语句中返回的值的类型一样。【例3_2】方法的返回值。classExam3_2{staticinti=10;publicstaticvoidprint1(){System.out.println(i=+i);}publicstaticintprint2(){returni;}publicstaticvoidmain(String[]args){print1();System.out.println(i=+print2());}}程序中我们创建了两个方法print1()和print2(),print1()方法是无返回值的,因此在声明时使用void表明其无返回值,print2()方法会返回一个int类型的变量i,因此在方法声明是使用int表明返回值类型是int型,并使用return语句返回了int类型的变量i。程序的运行结果如图3-1所示。本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|.2.2方法的参数从参数上考察方法的话,方法分为有参方法和无参方法,需要注意的是,在Java语言中,向方法传递参数的方式是“按值传递”。按值传递意味着当将一个参数传递给一个方法时,首先创建了源参数的一个副本并将这个副本传入了方法,这样方法接收的是原始值的一个副本。因此,即使在方法中修改了该参数,那仅仅是改变副本,而源参数值保持不变。【例3_3】方法的参数。classExam3_3{staticinti=10;publicstaticvoidset1(){i=100;}publicstaticvoidset2(intn){i=n;}publicstaticvoidprint(){System.out.println(i=+i);}publicstaticvoidmain(String[]args){print();set1();print();set2(50);print();}}对程序3.1做修改,添加了两个方法set1()和set()2,其中set1()是没有参数的方法,方法中将i的值修改为100,而set2()方法是带有一个整形参数的方法,将传进来的参数值赋值给i,这样在main()方法中调用set2()时,会将传入的整数值50传递给i。程序的运行结果如图3-2所示。图3-2例3_3程序运行结果【例3_4】方法的参数传递。classExam3_4{publicstaticvoidchangeI(inti){i=100;System.out.println(changeI方法中i=+i);}publicstaticvoidmain(String[]args){inti=10;System.out.println(转换前i=+i);changeI(i);System.out.println(转换后i=+i);}}不难看出,虽然在changeI()方法中改变了传进来的参数i的值,但对这个参数的源变量本身并没有影响,即对main方法里的i变量没有影响。这说明,按值传递实际上是将参数的值作了一个副本传进方法的,因此,无论在方法里怎么改变其值,结果都只是改变了拷贝的值,而不是源值。运行结果如图3-3所示。本资料由-大学生创业|创业|创业网提供资料在线代理|网页代理|代理网页|减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|.3.1创建对象创建对象包括对象声明和对象初始化两个部分。通常这两部分是结合在一起的,即定义对象的同时对其初始化,为其分配空间,并进行赋值。其格式为:类名对象名=new类名([参数列表])例如,创建例3.1中Exam3_1类的一个对象可以写成:Exam3_1e=newExam3_1();其中e是所创建的对象的名字。Java中的对象是引用类型。引用类型是指该类型的标识符表示的是一片连续内存地址的首地址。对象定义后系统将给对象标识符分配一个内存单元,用以存放实际对象在内存中的存放位置。在没有用new关键字创建实际对象前,对象名的值为null。3.3.2使用对象成员一旦定义并创建了对象,就可以在程序中使用对象了。对象通过使用成员运算符“.”实现对变量的访问和方法的调用。通常使用的格式为:对象名.成员变量名对象名.成员方法名([参数列表])【例3_5】类定义示例。classExam3_5{staticinti=10;publicstaticvoidprintI(){System.out.println(i=+i);}publicstaticvoidmain(String[]args){Exam3_5e=newExam3_5();e.printI();e.i=100;e.printI();}}程序中我们在main()方法中创建了类的对象e,并使用e访问了其中的变量i和方法e.printI(),运行结果如图3-2所示。图3-4例3_5程序运行结果3.3.3对象资源的回收每个对象都要求资源才能“生存”,其中最令人注目的资源是内存。如果不再需要使用一个对象,就必须将其清除,以便释放这些资源,给其他对象使用。我们创建对象,在需要的时候调用它,然后将其清除或者“破坏”。但是如何才能知道什么时间删除对象呢?Java编程语言解除了程序员回收内存资源的责任,它提供垃圾回收机制(GarbageCollection)以跟踪每一存储器的分配情况并对不再使用的内存资源作回收。在垃圾回收机制中,JVM会跟踪资源的使用情况,定期检测出不使用的内存,由系统自动回收并做再次分配。垃圾收集器“知道”一个对象在什么时候不再使用,然后会自动释放那个对象占据的内存空间。因此,Java程序中将不用考虑对象的释放问题,从而减轻程序员的负担,提高程序安全性,避免因资源耗尽而导致系统瘫痪的隐患。3.3.4类成员的访问控制在说明类的定义时我们提到了类及其成员的修饰符,可以用来修饰类的修饰符有public、abstract、final,用来修饰类的成员变量的有public、private、protected、final、static,修饰成员方法的有public、private、protected、final、static、abstract。任何修饰符都没有使用的,属于默认修饰符(friendly)。将这些修饰符的作用列如表3-1所示。表3-1类及其成员修饰符的作用访问控制修饰符同一类中同一包中不同包中的子类不同包中的非子类publicYesYesYesYesprotectedYesYesYesNo(friendly)YesYesNoNoprivateYesNoNoNo类型说明final最终类或最终成员,修饰类时表示此类不能有子类,修饰变量时表明此变量是一个常量,
本文标题:Java程序设计修改-ch03
链接地址:https://www.777doc.com/doc-4964761 .html