Java程序设计实用教程-第4章-类-与-对-象课件.ppt

上传人(卖家):三亚风情 文档编号:3006951 上传时间:2022-06-21 格式:PPT 页数:67 大小:907KB
下载 相关 举报
Java程序设计实用教程-第4章-类-与-对-象课件.ppt_第1页
第1页 / 共67页
Java程序设计实用教程-第4章-类-与-对-象课件.ppt_第2页
第2页 / 共67页
Java程序设计实用教程-第4章-类-与-对-象课件.ppt_第3页
第3页 / 共67页
Java程序设计实用教程-第4章-类-与-对-象课件.ppt_第4页
第4页 / 共67页
Java程序设计实用教程-第4章-类-与-对-象课件.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、1注意:开始用功了注意:开始用功了!2Java程序设计实用教程程序设计实用教程 第第4章章配合例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平类 与 对 象 3导读导读 面向对象编程主面向对象编程主要体现下列三个特性。要体现下列三个特性。 封装性封装性 继承继承 多态多态44.1 从抽象到类从抽象到类 抽象的关键是抓住事物的两个方面:属性和功能。抽象的关键是抓住事物的两个方面:属性和功能。 抽象的目的是从具体的实例中抽取共有属性和功抽象的目的是从具体的实例中抽取共有属性和功能形成一种数据类型。能形成一种数据类型。 54.2 类类 类类是组成是组成JavaJava

2、程序的基本要素。类封装了一程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模类对象的状态和方法。类是用来定义对象的模板。板。 类的实现包括两部分:类声明和类体。基本类的实现包括两部分:类声明和类体。基本格式为:格式为:class class 类名类名 类体的内容类体的内容 64.2.1 类声明类声明 类声明类声明 :class 类名类名例如:class Vehicle 其中的“class Vehicle”称作类声明;“Vehicle”是类名。 给类命名时,遵守下列编程风格(这不是语法要求给类命名时,遵守下列编程风格(这不是语法要求的,但应当遵守):的,但应当遵守): 1如果类名

3、使用拉丁字母,那么名字的首字母使用大写字母,如。 2类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每个单词的首字母使用大写。 74.2.2 类体类体 类声明之后的一对大括号类声明之后的一对大括号“”,“”以及它以及它们之间的内容称作类体,大括号之间的内容称作们之间的内容称作类体,大括号之间的内容称作类体的内容。类体的内容。 类体的内容由两部分构:一部分是变量的声明,类体的内容由两部分构:一部分是变量的声明,用来刻画属性;另一部分是方法的定义,用来刻用来刻画属性;另一部分是方法的定义,用来刻画功能。画功能。 8例例4-1Vehicle .java 94.2.3 成员变量成员变量 类

4、体分为两部分:一部分是变量的声明,另一部分是方法的定义。变量声明部分所声明的变量被称做域变量或成员变量。2成员变量的有效范围:成员变量的有效范围:成员变量在整个类内都有效,其有效性与它在类体中书写的先后位置无关。 3编程风格编程风格(1)一行只声明一个变量。 (2)变量的名字符合标识符规定。 (3)变量名字见名知意,避免容易混淆的变量名字。1成员变量的类型:成员变量的类型:成员变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组、对象和接口。104.2.4 方法方法_ _ 1方法声明 方法的定义包括两部分:方法声明和方法体。一方法的定义包括两部分:方

5、法声明和方法体。一般格式为:般格式为: 方法声明部分方法声明部分 方法体的内容方法体的内容 1 1方法声明方法声明 方法声明包括方法名和方法的返回类型,如:方法声明包括方法名和方法的返回类型,如: double getSpeed() return speed; 注:方法的返回类型注:方法的返回类型、方法的参数、方法的名字方法的参数、方法的名字 114.2.4 方法方法_ _ 2方法体 2 2方法体方法体 方法声明之后的一对大括号方法声明之后的一对大括号“” “” ,“”“”以及以及之间的内容称作方法的方法体。方法体的内容包括局之间的内容称作方法的方法体。方法体的内容包括局部变量的声明和部变量的

6、声明和JavaJava语句。语句。 在方法体中声明的变量和方法的参数被称作局部在方法体中声明的变量和方法的参数被称作局部变量。变量。 局部变量只在声明它的方法内有效,而且与其声局部变量只在声明它的方法内有效,而且与其声明的位置有关。方法的参数在整个方法内有效,方法明的位置有关。方法的参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。如果局内的局部变量从声明它的位置之后开始有效。如果局部变量的声明是在一个复合语句中,那么该局部变量部变量的声明是在一个复合语句中,那么该局部变量的有效范围是该复合语。的有效范围是该复合语。 124.2.4 方法方法_ _ 3区分成员变量和局部变量 3

7、 3区分成员变量和局部变量区分成员变量和局部变量 如果局部变量的名字与成员变量的名字相同,则成如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。员变量被隐藏,即这个成员变量在这个方法内暂时失效。 如果想在该方法中使用被隐藏的成员变量,必须使如果想在该方法中使用被隐藏的成员变量,必须使用关键字用关键字this 。 134.2.5 需要注意的问题需要注意的问题 类体的内容由两部分构类体的内容由两部分构成成:一部分是变量的声明,一部分是变量的声明,另一部分是方法的定义。另一部分是方法的定义。 对成员变量的操作只能放在方法中,方法可对成员变量的操作只能放在方

8、法中,方法可以对成员变量和该方法体中声明的局部变量进行以对成员变量和该方法体中声明的局部变量进行操作。在声明成员变量时可以同时赋予初值,操作。在声明成员变量时可以同时赋予初值,但但是不可以在类体中有单独的赋值语句(不可以有是不可以在类体中有单独的赋值语句(不可以有变量的声明和方法的定义以外的其它语句)。变量的声明和方法的定义以外的其它语句)。 144.2.6 类的类的UMLUML图图 UML(Unified Modeling Language Diagram)UML(Unified Modeling Language Diagram)图属于图属于结构图,常被用于描述一个系统的静态结构。一个结构

9、图,常被用于描述一个系统的静态结构。一个UMLUML中通常包含有类中通常包含有类( (Class)Class)的的UMLUML图,接口图,接口( (Interface)Interface)的的UMLUML图以及泛化关系图以及泛化关系( (Generalization)Generalization)的的UMLUML图、关联图、关联关系关系( (Association)Association)的的UMLUML图、依赖关系图、依赖关系( (Dependency)Dependency)的的UMLUML图和实现关系图和实现关系( (Realization)Realization)的的UMLUML图。图。

10、 在类的在类的UMLUML图中,使用一个长方形描述一个类的主要构图中,使用一个长方形描述一个类的主要构成,将长方形垂直地分为三层。成,将长方形垂直地分为三层。第第1 1层是名字层;层是名字层;第第2 2层是变量层,也称属性层;层是变量层,也称属性层;第第3 3层是方法层,也称操作层。层是方法层,也称操作层。15图图4.1 Vehicle类的类的UML图图 Vehicle.javaVehicle.java public class Vehicle double speed; int power; void speedUp(int s) speed=speed+s; void speedDown(

11、int d) speed=speed-d; void setPower(int p) power=p; int getPower() return power; double getSpeed() return speed; 164.3 构造方法与对象的创建构造方法与对象的创建 类是面向对象语言中最重用的一种数据类型,那类是面向对象语言中最重用的一种数据类型,那么就可以用它来声明变量。在面向对象语言中,用类么就可以用它来声明变量。在面向对象语言中,用类声明的变量被称作对象。和基本数据类型不同,在用声明的变量被称作对象。和基本数据类型不同,在用类声明对象后,还必须要创建对象,即为声明的对象类声明

12、对象后,还必须要创建对象,即为声明的对象分配变量分配变量( (确定对象所具有的属性确定对象所具有的属性) ),当使用一个类创,当使用一个类创建一个对象时,也称给出了这个类的一个实例。通俗建一个对象时,也称给出了这个类的一个实例。通俗的讲,类是创建对象的的讲,类是创建对象的“模板模板”,没有类就没有对象。,没有类就没有对象。构造方法和对象的创建密切相关构造方法和对象的创建密切相关 。174.3.1 构造方法构造方法 构造方法是一种特殊方法,构造方法是一种特殊方法,它的名字必须与它的名字必须与它所在的类的名字完全相同,而且没有类型。它所在的类的名字完全相同,而且没有类型。 允许一个类中编写若干个构

13、造方法,但必须允许一个类中编写若干个构造方法,但必须保证他们的参数不同,即参数的个数不同,或者保证他们的参数不同,即参数的个数不同,或者是参数的类型不同。是参数的类型不同。 需要注意的是需要注意的是(1 1) 如果类中没有编写构造方法,系统会默认该类只有一个构如果类中没有编写构造方法,系统会默认该类只有一个构造方法,该默认的构造方法是无参数的,且方法体中没有语句。造方法,该默认的构造方法是无参数的,且方法体中没有语句。(2 2)如果类里定义了一个或多个构造方法,那么)如果类里定义了一个或多个构造方法,那么JavaJava不提供默不提供默认的构造方法认的构造方法 。 184.3.2 创建对象创建

14、对象1 1,2 2 1 1对象的声明对象的声明一般格式为:一般格式为:类的名字类的名字 对象名字对象名字;如:如: Vehicle car; 这里这里VehicleVehicle是一个类的名字,是一个类的名字,carcar是我们声明的对象的名字。是我们声明的对象的名字。2.2.为声明的对象分配内存为声明的对象分配内存 使用使用newnew运算符和类的构造方法为声明的对象分配变量,即创建运算符和类的构造方法为声明的对象分配变量,即创建对象。如果类中没有构造方法,系统会调用默认的构造方法,默对象。如果类中没有构造方法,系统会调用默认的构造方法,默认的构造方法是无参数的,且方法体中没有语句。如:认的

15、构造方法是无参数的,且方法体中没有语句。如:car=new Vehiclee(); 19例例4-2Example4_2.java ,Vehicle .java 204.3.2 创建对象创建对象3 3,4 4 3 3对象的内存模型对象的内存模型 (1 1)声明对象时的内存模型声明对象时的内存模型 Vehicle car1 ;(2 2)对象分配内存后的内存模型对象分配内存后的内存模型 car1 = new Vehicle(); 4 4创建多个不同的对象创建多个不同的对象 214.3.3 使用对象使用对象 对象不仅可以操作自己的变量改变状态,而且能调对象不仅可以操作自己的变量改变状态,而且能调用类中

16、的方法产生一定的行为。用类中的方法产生一定的行为。 通过使用运算符通过使用运算符“.”“.”,对象可以实现对自己变量,对象可以实现对自己变量的访问和方法的调用。的访问和方法的调用。 1 1对象操作自己的变量(对象的属性)对象操作自己的变量(对象的属性) 对象对象. .变量变量; ; 2 2对象调用类中的方法(对象的功能)对象调用类中的方法(对象的功能) 对象对象. .方法方法; ; 3 3体现封装体现封装 当对象调用方法时,方法中出现的成员变量就是指当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量。分配给该对象的变量。 22图图4.6 对象体现封装对象体现封装 代码:代码:car

17、1.setPower(128);car2.setPower(76);car1.speedUp(80);car2.speedUp(100);234.3.4 对象的引用和实体对象的引用和实体 类是体现封装的一种数据类型,类声明的变量称做类是体现封装的一种数据类型,类声明的变量称做对象,对象中负责存放引用,以确保对象可以操作分配对象,对象中负责存放引用,以确保对象可以操作分配给该对象的变量以及调用类中的方法。分配给对象的变给该对象的变量以及调用类中的方法。分配给对象的变量习惯地称做对象的实体。量习惯地称做对象的实体。 1 1避免使用空对象避免使用空对象 没有实体的对象称作空对象,空对象不能使用,即没

18、有实体的对象称作空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。不能让一个空对象去调用方法产生行为。2垃圾收集垃圾收集一个类声明的两个对象如果具有相同的引用,那么二者一个类声明的两个对象如果具有相同的引用,那么二者就具有完全相同的实体,而且就具有完全相同的实体,而且Java有所谓有所谓“垃圾收集垃圾收集”机制,这种机制周期地检测某个实体是否已不再被任何机制,这种机制周期地检测某个实体是否已不再被任何对象所拥有(引用),如果发现这样的实体,就释放实对象所拥有(引用),如果发现这样的实体,就释放实体占有的内存。体占有的内存。 24图图4.7, 图图4.8 代码:代码:Vehicle

19、carOne = new Vehicle ();Vehicle carTwo = new Vehicle ); carOne.speedUp(60);carTwo.speedUp(90); 代码:代码:carOne = carTwo 25例例4-3Example4_3.java ,Vehicle .java 264.4 参数传值参数传值 方法中最重要的部分之一就是方法的参数,方法中最重要的部分之一就是方法的参数,参数属于局部变量,当对象调用方法时,参数参数属于局部变量,当对象调用方法时,参数被分配内存空间,并要求调用者向参数专递值,被分配内存空间,并要求调用者向参数专递值,即方法被调用时,参数

20、变量必须有具体的值。即方法被调用时,参数变量必须有具体的值。274.4.1 传值机制传值机制 在在JavaJava中,方法的所有参数都是中,方法的所有参数都是“传值传值”的,的,也就是说,方法中参数变量的值是调用者指定的也就是说,方法中参数变量的值是调用者指定的值的拷贝。例如,如果向方法的值的拷贝。例如,如果向方法的intint型参数型参数x x传递传递一个一个intint值,那么参数值,那么参数x x得到的值是传递的值的拷得到的值是传递的值的拷贝。贝。284.4.2 基本数据类型参数的传值基本数据类型参数的传值 对于基本数据类型的参数,向该参数传递的对于基本数据类型的参数,向该参数传递的值的

21、级别不可以高于该参数的级别值的级别不可以高于该参数的级别 。29例例4-4Circle.java ,Example4_4.java 304.4.3 引用类型参数的传值引用类型参数的传值 当参数是引用类型时,当参数是引用类型时,“传值传值”传递的是变传递的是变量中存放的量中存放的“引用引用”,而不是变量所引用的实体。,而不是变量所引用的实体。31例例4-5TV.java ,Chineses.java , Example4_5.java 324.4.4 可变参数可变参数 可变参数是指在声明方法时不给出参数列表中从某项可变参数是指在声明方法时不给出参数列表中从某项直至最后一项参数的名字和个数,但这些

22、参数的类型必直至最后一项参数的名字和个数,但这些参数的类型必须相同。可变参数使用须相同。可变参数使用“”表示若干个参数,这些参表示若干个参数,这些参数的类型必须相同,最后一个参数必须是参数列表中的数的类型必须相同,最后一个参数必须是参数列表中的最后一个参数。例如:最后一个参数。例如: public void f(int x) 那么,那么,方法方法f f的参数列表中,从第的参数列表中,从第1 1个至最后一个参数都是个至最后一个参数都是intint型,但连续出现的型,但连续出现的intint型参数的个数不确定。称型参数的个数不确定。称x x是方是方法法f f的参数列表中的可变参数的的参数列表中的可

23、变参数的“参数代表参数代表”。 参数代表可以通过下标运算来表示参数列表中的具体参数代表可以通过下标运算来表示参数列表中的具体参数,即参数,即x0 x0,x1x1xmxm分别表示分别表示x x代表的第代表的第1 1个至个至第第m m个参数。个参数。 33例例4-6Computer.java ,Example4_6.java 344.5 有理数的类封装有理数的类封装 例例4-7有理数有两个重要的成员:分子和分母,另外还有理数有两个重要的成员:分子和分母,另外还有重要的四则运算。有重要的四则运算。 例例4-7Rational.java ,Example4_7.java 354.6 对象的组合对象的组

24、合 一个类的成员变量可以是一个类的成员变量可以是JavaJava允许的任何数允许的任何数据类型,因此,一个类可以把对象作为自己的据类型,因此,一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该成员变量,如果用这样的类创建对象,那么该对象中就会有其他对象,也就是说该对象将其对象中就会有其他对象,也就是说该对象将其他对象作为自己的组成部分他对象作为自己的组成部分 。364.6.1 圆锥体圆锥体 例例4-8例例4-8 Circle.java,Circular.java ,Example4_8.java 374.6.2 关联关系和依赖关系关联关系和依赖关系的的UML图图_1关联关系1

25、1关联关系关联关系如果如果A A类中成员变量是用类中成员变量是用B B类声明的对象,那类声明的对象,那么么A A和和B B的关系是关联关系,称的关系是关联关系,称A A关联于关联于B B或或A A组合组合了了B B。图图4.16所示为例所示为例4-8中中Circular类关联于类关联于Circle类的类的UML图。图。 384.6.2 关联关系和依赖关系的关联关系和依赖关系的UML图图_2依赖关系 2依赖关系依赖关系 如果如果A A类中某个方法的参数是用类中某个方法的参数是用B B类声明的对类声明的对象或某个方法返回的数据类型是象或某个方法返回的数据类型是B B类对象,那么类对象,那么A A和

26、和B B的关系是依赖关系,称的关系是依赖关系,称A A依赖于依赖于B B。图图4.17所示为所示为ClassRoom依赖于依赖于Student的的UML图。图。 394.7 4.7 实例成员与类成员实例成员与类成员 4.7.1 4.7.1 实例变量和类变量的声明实例变量和类变量的声明 在声明成员变量时,用关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称为static变量,静态变量)。class Dog float x; /实例变量 static int y; /类变量 404.7.2 实例变量和类变量的区别实例变量和类变量的区别 1不同对象的实例变量互不相同 2所有对象共享

27、类变量 3通过类名直接访问类变量 例例4-9 Lader.java , Example4_9.java 414.7.3 实例方法和类方法的定义实例方法和类方法的定义 类中的方法也可分为实例方法和类方法。方法声明时,方法类型前面不加关键字static修饰的是实例方法、加static关键字修饰的是类方法(静态方法)。class A int a; float max(float x,float y) /实例方法 static float jerry() /类方法 static void speak(String s) /类方法 424.7.4 实例方法和类方法的区别实例方法和类方法的区别 1对象调用

28、实例方法 当对象调用实例方法时,该方法中出现的实例变量就是分配给该对象的实例变量;该方法中出现的类变量也是分配给该对象的变量,只不过这个变量和所有的其他对象共享而已。2类名调用类方法 类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。和实例方法不同的是,类方法不可以操作实例变量,这是因为在类创建对象之前,实例成员变量还没有分配内存。 例子例子4-10 Example4_10.java 434.8 方法重载与多态方法重载与多态 方法重载的意思是:一个类中可以有多个方法具有方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参相同的名字,但这些

29、方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。数的个数不同,或者是参数的类型不同。例例4-114-11 Tixing.java, , People.java, , Circle.java.java, , Example4_11.java class A float add(int a,int b) return a+b; float add(long a,int b) return a+b; double add(double a,int b) return a+b; 444.9 thisthis关键字关键字 thisthis是是JavaJava的一个关键字,表示某个对象。

30、的一个关键字,表示某个对象。thisthis可以出现可以出现在实例方法和构造方法中,但不可以出现在类方法中。在实例方法和构造方法中,但不可以出现在类方法中。 实例方法可以操作类的成员变量,当实例成员变量在实例实例方法可以操作类的成员变量,当实例成员变量在实例方法中出现时,默认的格式是:方法中出现时,默认的格式是:this.成员变量成员变量;当当static成员变量成员变量在实例方法中出现时,默认的格式是:在实例方法中出现时,默认的格式是:类名类名.成员变量成员变量; 当一个对象调用方法时,方法中的实例成员变量就是指分配当一个对象调用方法时,方法中的实例成员变量就是指分配给该对象的实例成员变量,

31、而给该对象的实例成员变量,而staticstatic变量则和其他对象共享。因变量则和其他对象共享。因此,通常情况下,可以省略实例成员变量名字前面的此,通常情况下,可以省略实例成员变量名字前面的“this.”this.”,以及以及staticstatic变量前面的变量前面的“类名类名.”.”。 但是,当实例成员变量的名字和局部变量的名字相同时,成但是,当实例成员变量的名字和局部变量的名字相同时,成员变量前面的员变量前面的“this.this.”或或“类名类名. .”就不可以省略。就不可以省略。 注:注:thisthis不能出现在类方法中,这是因为,类方法可以通过不能出现在类方法中,这是因为,类方

32、法可以通过类名直接调用,这时,可能还没有任何对象诞生。类名直接调用,这时,可能还没有任何对象诞生。 454.10 包包 包是包是Java语言中有效地管理类的一个机制。语言中有效地管理类的一个机制。包名的目的是有效的区分名字相同的类。不包名的目的是有效的区分名字相同的类。不同同JavaJava源文件中两个类名字相同时,它们可以源文件中两个类名字相同时,它们可以通过隶属不同的包来相互区分。通过隶属不同的包来相互区分。 464.10.1 包语句包语句 通过关键字通过关键字packagepackage声明包语句。声明包语句。 packagepackage语句作为语句作为JavaJava源文件的第一条语

33、句,源文件的第一条语句,为该源文件中声明的类指定包名。为该源文件中声明的类指定包名。 package package语句的一般格式为:语句的一般格式为: package package 包名包名; ; 例如:例如: package sunrise; package ; 474.10.2 有包名的类的存储目录有包名的类的存储目录 如果一个类有包名,那么就不能在任意位置存放它,如果一个类有包名,那么就不能在任意位置存放它,否则虚拟机将无法加载这样的类。否则虚拟机将无法加载这样的类。 程序如果使用了包语句程序如果使用了包语句,例如:例如:package tom.package tom.jiafeij

34、iafei; 那么存储文件的目录结构中必须包含有如下的结构那么存储文件的目录结构中必须包含有如下的结构 tomtomjiafeijiafei 如:如: c:1000tom c:1000tomjiafeijiafei 并且要将源文件编译得到的类的字节码文件保存在目并且要将源文件编译得到的类的字节码文件保存在目录录c:1000tomjiafei中(源文件可以任意存放)。中(源文件可以任意存放)。484.10.3 运行有包名的主类运行有包名的主类 如果主类的包名是如果主类的包名是tom.jiafei,那么主类的字节码一那么主类的字节码一定存放在定存放在tomjiefei目录中,运行时必须到目录中,运

35、行时必须到tomjiefei的上一层(即的上一层(即tom的父目录)目录中去运行主类。的父目录)目录中去运行主类。 假设假设tomjiefei的上一层目录是的上一层目录是1000,那么,必须如,那么,必须如下格式来运行:下格式来运行: C:1000java tom. C:1000java tom.jiafeijiafei. .主类名主类名 注:主类名是:注:主类名是:“包名包名. .主类名主类名”例例4-12 4-12 Student.java, Example4_12.java 494.11 import import 语句语句 一个类可能需要另一个类声明的对象作为自一个类可能需要另一个类声

36、明的对象作为自己的成员或方法中的局部变量,如果这两个类在己的成员或方法中的局部变量,如果这两个类在同一个包中,当然没有问题。同一个包中,当然没有问题。 如果一个类想要使用的那个类和它不在一个如果一个类想要使用的那个类和它不在一个包中,要使用包中,要使用importimport语句完成使命。语句完成使命。504.11.1 引入类库中的类引入类库中的类 如果用户需要类库中的类就必须使用如果用户需要类库中的类就必须使用import语语句,如:句,如: import java.util.Date; import java.util.Date; 例例4-13 4-13 Example4_13.java

37、514.11.2 引入自定义包中的类引入自定义包中的类 用户程序可以使用用户程序可以使用tom.jiafei包包中的类中的类如:如:import tom.import tom.jiafeijiafei. .* *; ; 使用使用非类库非类库中有包名的类,也要使用中有包名的类,也要使用import语句。语句。 例例4-14 4-14 Triangle.java 例例4-15 4-15 Example4_15.java 524.11.3 使用无包名的类使用无包名的类 之前,我们在源文件中一直没有使用包语句,因之前,我们在源文件中一直没有使用包语句,因此各个源文件得到的类都没有包名。如果一个源文件此

38、各个源文件得到的类都没有包名。如果一个源文件中的类想使用无名包中的类,只要将这个无包名的类中的类想使用无名包中的类,只要将这个无包名的类的字节码和当前类保存在同一目录中即可的字节码和当前类保存在同一目录中即可。 例例4-16 4-16 A.java ,Example4_16.java 534.11.4 避免类名混淆避免类名混淆 1区分无包名和有包名的类区分无包名和有包名的类 如果一个源文件使用了一个无名包中的如果一个源文件使用了一个无名包中的A类,同时类,同时又用又用import语句引入了某个有包名的同名的类,如语句引入了某个有包名的同名的类,如tom.jiafei中的中的A类,就可能引起类名

39、的混淆。类,就可能引起类名的混淆。 2区分有包名的类区分有包名的类 如果一个源文件引入了两个包中同名的类,那么在如果一个源文件引入了两个包中同名的类,那么在使用该类时,不允许省略包名使用该类时,不允许省略包名 。544.12 访问权限访问权限 当用一个类创建了一个对象之后,该对象可当用一个类创建了一个对象之后,该对象可以通过以通过“. .”运算符操作自己的变量、使用类中运算符操作自己的变量、使用类中的方法,但对象操作自己的变量和使用类中的的方法,但对象操作自己的变量和使用类中的方法是有一定限制的。方法是有一定限制的。 554.12.1 何谓访问权限何谓访问权限 所谓访问权限是指对象是否可以通过

40、所谓访问权限是指对象是否可以通过“. .”运算符操作自己的变量或通过运算符操作自己的变量或通过“. .”运算符使用运算符使用类中的方法。类中的方法。 访问限制修饰符有访问限制修饰符有privateprivate、protectedprotected和和publicpublic,都是都是JavaJava的关键字,用来修饰成员变的关键字,用来修饰成员变量或方法。量或方法。564.12.2 私有变量和私有方法私有变量和私有方法 用关键字用关键字private修饰的成员变量和方法称修饰的成员变量和方法称为私有变量和私有方法。为私有变量和私有方法。 对于私有成员变量或方法,只有在本类中对于私有成员变量或

41、方法,只有在本类中创建该类的对象时,这个对象才能访问自己的创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。私有成员变量和类中的私有方法。 例例4-17 4-17 Yuan.java ,Example4_17.java class Tom private float weight; private float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; /非法 float sum=cat.f(3,4); /非法 574.12.3 共有变量和共有方

42、法共有变量和共有方法 用用public修饰的成员变量和方法被称为共有变量和修饰的成员变量和方法被称为共有变量和共有方法共有方法 。 我们在任何一个类中用类我们在任何一个类中用类Tom Tom 创建了一个对象后,创建了一个对象后,该对象能访问自己的该对象能访问自己的publicpublic变量和类中的变量和类中的publicpublic方法方法(也可以通过类名来操作成员变量、方法)(也可以通过类名来操作成员变量、方法) 。class Tom public float weight; public float f(float a,float b) return a+b; class Jerry v

43、oid g() Tom cat=new Tom(); cat.weight=23f; /合法 float sum=cat.f(3,4); /合法 584.12.4 友好变量和友好方法友好变量和友好方法 当在另外一个类中用类当在另外一个类中用类Tom 创建了一个对象后,如创建了一个对象后,如果这个类与果这个类与Tom类在同一个包中,那么该对象能访问自类在同一个包中,那么该对象能访问自己的友好变量和友好方法。己的友好变量和友好方法。 在任何一个与在任何一个与Tom同一包中的类中,也可以通过同一包中的类中,也可以通过Tom类的类名访问类的类名访问Tom类的类友好成员变量和类友好方法。类的类友好成员变

44、量和类友好方法。class Tom float weight; float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; /合法 float sum=cat.f(3,4); /合法 594.12.5 受保护的成员变量和方法受保护的成员变量和方法 用用protectedprotected修饰的成员变量和方法被称为受保护修饰的成员变量和方法被称为受保护的成员变量和受保护的方法的成员变量和受保护的方法 。class Tom protected float weight; p

45、rotected float f(float a,float b) return a+b; class Jerry void g() Tom cat=new Tom(); cat.weight=23f; /合法 float sum=cat.f(3,4); /合法 604.12.6 publicpublic类与友好类类与友好类 类声明时,如果在关键字类声明时,如果在关键字classclass前面加上前面加上publicpublic关键字,就称这样的类是一个关键字,就称这样的类是一个public public 类类 。 可以在可以在任何另外一个类任何另外一个类中,使用中,使用publicpubli

46、c类创类创建对象。建对象。 如果一个类不加如果一个类不加publicpublic修饰,这样的类被称修饰,这样的类被称作友好类。作友好类。 在另外一个类中使用友好类创建对象时,要保在另外一个类中使用友好类创建对象时,要保证它们是在证它们是在同一包中同一包中。614.13 基本类型的类包装基本类型的类包装 JavaJava的基本数据类型包括:的基本数据类型包括:bytebyte、intint、shortshort、longlong、floatfloat、doubledouble、charchar。 Java Java提供了基本数据类型相关的类,实现了提供了基本数据类型相关的类,实现了对基本数据类型

47、的封装。对基本数据类型的封装。 这些类分别是:这些类分别是:ByteByte、IntegerInteger、ShortShort、LongLong、FloatFloat、DoubleDouble和和CharacterCharacter类。这些类类。这些类在在java.java.langlang包中。包中。624.13.1 DoubleDouble和和FloatFloat类类 Double类和类和Float类实现了对类实现了对double和和float基本型数据的类包装。基本型数据的类包装。 Double类的构造方法:类的构造方法:Double(double num) Float类的构造方法:类

48、的构造方法: Float(float num) Double对象调用对象调用doubleValue()方法方法可以返回可以返回该对象含有的该对象含有的double型数据型数据。 Float对象调用对象调用floatValue()方法方法可以返回该对可以返回该对象含有的象含有的float型数据型数据。 634.13.2 ByteByte、Short Short 、IntegerInteger、LongLong类类 上述个类的构造方法分别上述个类的构造方法分别 : Byte(byte num) Short(short num) Integer(int num) Long(long num) Byt

49、e、Short、Integer和和Long对象分别调用对象分别调用byteValue ()、shortValue()、intValue()和和longValue ()方法方法返回该对象含有的返回该对象含有的基本型数据基本型数据。 644.13.3 CharacterCharacter类类 CharacterCharacter类实现了对类实现了对charchar基本型数据的类包装。基本型数据的类包装。 Character Character类的构造方法:类的构造方法:Character(char c) Character类中的一些常用类方法:类中的一些常用类方法: public static b

50、oolean isDigit(char ch) 如果ch是数字字符方法返回 true,否则返回false。 public static boolean isLetter(char ch) 如果如果ch是字母方法返回是字母方法返回 true,否则否则返回返回false。 public static boolean isLetterOrDigit(char ch) 如果如果ch是数字字符或字母是数字字符或字母方法返回方法返回 true,否则返回否则返回false。 public static boolean isLowerCase(char ch) 如果如果ch是小写字母方法返回是小写字母方法返回

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Java程序设计实用教程-第4章-类-与-对-象课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|