第6章类与对象·在日常生活中,在盖房子之前要首先设计一个建筑图纸,然后根据图纸来盖房子。所谓类,好比在日常生活中描述一个物品的信息,如房子的建筑图纸。而对象就好比实实在在的房子。本章将要介绍类的定义、类的成员变量的定义和方法的定义、方法的参数等知识。通过本章的学习,读者应该能够完成如下几个目标。·了解什么是面向对象。·熟悉Java中的类并能够进行类的操作。·掌握成员变量和局部变量的区别。·掌握Java程序中的方法的创建和使用。北京源智天下科技有限公司1-1联系方式:什么是面向对象·所谓面向对象,是指编写程序的时候要围绕着一个对象的功能进行编写的。本节将要介绍面向对象的特点以及与面向过程编程的区别。北京源智天下科技有限公司1-2联系方式:面向对象编程的特点···面向对象编程的缩写是OOP,全称为ObjectOrientedProgramming。在进行面向对象的编程时,方法和成员变量都写在具体的对象里,并对其成员变量和方法有很好的隐藏性。对象之间的访问都是通过其接口进行的。下面列举面向对象编程的特点,分为如下几种。首先要说的是继承。所谓继承,是发生在类与类之间的,是子类共享父类成员变量和方法的一种模式。通过扩展子类的方法可以使子类有比父类更加强大的功能。说明:继承是面向对象编程的特点,同样也是Java的特点,这里和其他语言有很大不同。·示例代码·········01//bike类描述的是一个自行车02classbike03{04}0506//racing_cycle类描述的是一个公路赛车,继承自bike07classracing_cycleextendsbike08{09}北京源智天下科技有限公司1-3联系方式:·提示:继承是发生在类与类之间的。继承可以是单继承,也可以多层继承。·多态是指对象在运行期和编译期具有两种状态,多态的使用使代码具有了更多的灵活性和重用性。·抽象是指在定义类的时候,确定了该类的一些行为和动作。比如自行车可以移动,但怎么移动不进行说明。这种提前定义一些动作和行为的类为抽象的。·封装是指对一件物品的描述信息是这个物品所特有的,是不能让外界看到的一些成员变量和方法。在Java里成员变量和方法就被封装在类里,需要通过一些特有的方法访问它们。北京源智天下科技有限公司1-4联系方式:面向对象编程与面向过程编程的区别·面向过程是指在遇到问题的时候,怎么去解决这个问题,而分析问题的步骤,就是解决这个问题的方法,是通过方法一步一步来完成的。面向对象是指在遇到问题的时候,把问题分解成各自独立功能的类,而这个类是完成各自问题的。总结如下所述。·面向过程和面向对象最明显的区别就是,面向对象是按照要完成的功能来实现的,而面向过程是按照解决这个问题的步骤来实现的。·面向对象是按照程序中的功能进行划分的。·面向过程是按照问题的解决思路来划分的,是一步一步来解决问题的。·面向过程更看重的是完成问题的过程。·面向对象更看重的是功能,通过各种功能模块的组合来完成问题。北京源智天下科技有限公司1-5联系方式:什么是类·所谓类是一种抽象的东西,描述的是一个物品的完整信息。比如房子和图纸的关系。在Java里,图纸就是类,定义了房子的各种信息,而房子是类的实体。北京源智天下科技有限公司1-6联系方式:········定义一个类表示定义了一个功能模块。下面先介绍如何定义一个类,以及如何创建这个类的实例,即对象。类是通过关键字class来定义的,在class关键字后面加上类的名称,这样就创建了一个类。在类里面可以定义类的成员变量和方法。类的语法代码如下所示。class类的名称{//类的成员变量//类的方法}创建类的实例是通过new关键字来定义的,后面加上定义类时为类起的名称,需要注意的是在类名后还需要一个括号。创建类的实例的代码如下所示。new类的名称();北京源智天下科技有限公司联系方式:如何使用现有类·在定义一些类的时候,如何使用它们呢?这里需要分为多种情况。定义的类可以在一个包下面,也可以不在一个包下面,这在使用时是不同的。类又分为已有类和自定义类,它们之间的使用也是有区别的。下面就通过范例来讲解在不同情况下如何使用类。·【范例】在同目录下使用类。首先是定义一个bike类,在该类中不存在任何成员变量和方法,这里只是演示如何在同一目录下使用类。·示例代码·01//bike.java·02classbike·03{·04}北京源智天下科技有限公司1-8联系方式:·····接下来定义一个使用bike类的类。01//testBike.java02//在testBike类里使用了bike类03classtestBike04{··0506}bikeb=newbike();北京源智天下科技有限公司1-9联系方式:类设计的技巧··设计一个类要明确这个所要完成的功能,类里的成员变量和方法是描述类的功能的。如果定义了和这个类不相关的成员变量和方法将不是一个良好的设计。【范例】示例代码是一个不太好的类设计。·示例代码··01publicclassbike02{·····0304050607//这个成员变量描述的是自行车的颜色.Stringcolor=黄色;//这个成员变量描述的是公路赛车的颜色,所以在这里不太合适Stringracing_color=绿色;··1-1008}在本程序中定义了一个表示自行车颜色的color成员变量,又定义了一个表示赛车颜色的racing_color成员变量;而该程序是定义的一个bike自行车类,所以定义表示赛车颜色的racing_color成员变量是不太好的选择。北京源智天下科技有限公司联系方式:····【范例6-8】示例代码6-8是一个良好的类设计。示例代码6-801publicclassbike02{··0304//这个成员变量描述的是自行车的颜色Stringcolor=黄色;···05}01publicclassracing02{··0304//这个成员变量描述的是公路赛车的颜色Stringracing_color=绿色;··1-1105}【代码解析】在该范例中,定义了两个类。其中bike类中只定义了一个表示自行车颜色的color成员变量。同样在racing类中只定义了一个表示赛车颜色的racing_color成员变量。这种设计相对上一个范例中的设计要好得多,这样使类和成员变量相对应,也使别人更容易读懂代码。北京源智天下科技有限公司联系方式:成员变量·所谓成员变量就是这个类里定义的一些私有的变量.,这些变量是属于这个类的。就好比日常生活中的自行车的大小,即这个车子是26还是28的,这个尺寸就是自行车的成员变量,是描述这个自行车的。下面开始介绍成员变量。北京源智天下科技有限公司1-12联系方式:成员变量的创建··成员变量描述的是这个类的一些属性或状态的,下面通过代码来演示怎么定义成员变量。语法为:变量的类型变量的名称。【范例】创建成员变量的一般形式。·示例代码···01//bike类描述的是一个自行车02publicclassbike03{·····0405060708//这个成员变量描述的是自行车的颜色.Stringcolor;//这个成员变量描述的是自行车的大小,即尺寸.Stringsize;··1-1309}在该程序中,定义了一个叫做bike的类,在该类中定义了两个成员变量,一个是表示自行车颜色的color成员变量,一个是表示自行车型号的size成员变量。北京源智天下科技有限公司联系方式:下面看一个创建成员变量的完整形式。·代码讲解·通过new关键字来创建这个bike类的对象,用bike类的对象引用b来给其成员变量赋值。因为成员变量是在这个类实例化后才能访问到的。成员变量赋完值后,调用println语句来打印并显示结果。北京源智天下科技有限公司1-14联系方式:成员变量的初始化·通过new关键字来创建一个对象后,会有一个系统默认的初始值。所以说不管有没有在创建成员变量的时候给变量一个值,系统都会有一个默认的值。·成员变量和对象的引用在申明的时候不对其赋初值,那么系统都会赋一个初值,具体的信息如表所示。北京源智天下科技有限公司1-15联系方式:局部变量·局部变量和成员变量很相似都是描述信息的。局部变量和成员变量的不同点就是局部变量是在方法体里创建的,在方法体外是访问不到这个变量的。北京源智天下科技有限公司1-16联系方式:局部变量的创建和初始化··局部变量描述的是方法体的一些属性或状态的,下面通过代码来演示怎么定义局部变量。创建局部变量的基本语法为:变量的类型变量的名称。【范例】演示局部变量的例子。·示例代码···01//test类描述的是基本类型的初始化02publicclasstest403{···········0405060708091011121314}//程序的运行函数即主入口函数publicstaticvoidmain(Stringargs[]){//基本类型的局部变量intsize=123;booleanb=true;//打印并显示局部变量System.out.println(size);System.out.println(b);}北京源智天下科技有限公司1-17联系方式:局部变量和成员变量的区别·局部变量描述的是这个方法体内的属性的,而成员变量描述的是这个对象里的属性的,它们之间的区别,即访问区别如下:·成员变量可以被public、protected、default、private、static、final修饰符修饰。·局部变量可以被final修饰符修饰,但不能修饰为public、protected、default、private、static。·成员变量是在堆里进行创建的,而局部变量是在栈里进行创建的。·成员变量是系统默认值。·局部变量没有系统默认值,必须手动赋值。北京源智天下科技有限公司1-18联系方式:方法·每个人都有走、吃和睡等动作。在Java中,所谓方法就好比日常生活中的一个动作,是完成一系列操作的。在Java中也是如此,方法收到对象的信息,进行处理的操作。北京源智天下科技有限公司1-19联系方式:方法的创建和参数·············1-20方法的参数是提供外界在执行方法的时候提供给方法的特殊描述信息的,好比日常生活中的,用力砸东西,用大力砸东西。而这个用大力就是提供给这个进行特殊描述的。创建方法的语法为:方法修饰符方法的返回类型方法名称(方法参数){方法体}方法的定义如下所示。publicvoidadd(inti,intn){System.out.println(i+n);}代码说明:方法名称为add,有两个参数都是int类型的。方法体是打印i+n的值,并显示出来。方法的修饰符为public类型的,修饰符可有可无。北京源智天下科技有限公司联系方式:·····