面对对象编程基础课件_第1页
面对对象编程基础课件_第2页
面对对象编程基础课件_第3页
面对对象编程基础课件_第4页
面对对象编程基础课件_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

知识实践回顾1、编译单元组织灵活,一个编译单元可以有多个类,在实验中是两个类,即Computer和Tester,两个类一个是计算机类,一个是测试类;2、一个类可以包括成员属性和成员方法;成员属性一般定义为private范围,成员方法为public范围;3、方法如定义为private,是内部helper方法,数据隐藏部分,其他类无法直接使用知识实践回顾1、编译单元组织灵活,一个编译单元可以有多个类,4、类定义好后,通过类进行对象的实例化和初始化。(对于成员变量初始化顺序,1.声明时初始化2.初始化代码块初始化3.构造器初始化)如果没有给类定义无参数构造器,则编译器创建对象不带参数时,会隐式调用构造,初始化成员变量为系统默认值(P133表6-3)。5、成员方法的访问方式(在另一个类中)对象名.方法名

变量=对象名.方法名

//如果有返回值4、类定义好后,通过类进行对象的实例化和初始化。(对于成员变6、作用范围,由小到大有四种,依次为private,default,protected,public其中对于类、属性,和方法适用的如下:类:public,default,private(内部类)属性:四种都有,一般是private方法:public,default,private6、作用范围,由小到大有四种,依次为private,def第5讲面对对象编程基础(下)西亚斯学院计算机系姜斌2009年第5讲面对对象编程基础(下)西亚斯学院计算机系姜斌第4章

类和对象

一、包二、静态修饰符*三、最终类、最终属性、最终方法(final)四、其他类库里的常见类本章小结思考与练习

第4章类和对象

一、包一、包一、包1、包概念以及类库中的包Java允许把多个类收集在一起成为一组,称作包(package),管理类的一种组织形式。标准Java库被分类成许多的包,其中包括java.lang、java.util和等等。(注意java.lang包是基本语言包,是默认导入包)按功能划分分层的1、包概念以及类库中的包Java允许把多个类收集在一起成为一2、系统默认包如果我们没有定义包,编译后所有class文件会当前目录中,Java会认为当前目录所有类在一个匿名包中,如果使用默认访问范围,这些类文件可以相互访问。2、系统默认包如果我们没有定义包,编译后所有class文件会3、如何创建用户包创建包,我们可以通过package语句创建自己的包,包名的命名约定1)可以多个英文单词的名称,但必须全小写字母;2)当存在多层时,可以参考域名的反向定义;Sputer_app.*;3)如果不是规范名称,可转为合法的名称注意:package语句一定要在第一行,即import之前(课下可以练习一下类的访问控制练习,对照一下public和default范围的区别)3、如何创建用户包创建包,我们可以通过package语句创建4、包使用中的作用范围例子:定义两个包one和two,在包one中包含一个类A,在包two中B,C思考:对于default和public来修饰类,范围有何区别? 对于default和public来修饰属性和方法,范围又有何区别?见例子4、包使用中的作用范围例子:定义两个包one和two,在包o二、静态修饰符、静态字段和方法二、静态修饰符、静态字段和方法1、静态修饰符static称为静态修饰符,它可以修饰类中的属性和方法。使用static(静态)关键字,静态属性具有如下的要求:

1)一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象;

2)被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类属性,而不属于任何一个类的具体对象。

1、静态修饰符static称为静态修饰符,它可以修饰类2、静态属性静态属性的特点:静态属性类似于其他语言的全局变量;static换句话说,对于该类的任何一个具体对象而言,静态属性是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值;同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作;静态属性的值也可通过对象获得到。2、静态属性静态属性的特点:静态变量,对应一个类只有一份,对于成员变量,每个对象都有独立的一份;例如:此处的count用于统计我们创建对象的个数,它的初值为count=0;等我们创建三个对象后,它的值应该为3。newnewnew俺是黄色的**类似于其他语言全局变量-Stringcolorintcount(static)Face(脸)俺是蓝色的俺是红色的

静态属性图示静态变量,对应一个类只有一份,对于成员变量,每个对象都有独立Color=“黄”ColorColorcountColor=“黄”ColorColorc3、静态方法另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。(通过类名来访问这个方法)static一项要的用途就是定义提供功能操作的方法,帮助我们在不必创建对象的前提下调用那个方法,调用方便。

3、静态方法另一种情形是我们需要一个特殊的方法,它没有与这个包括静态变量和静态常量。静态变量常常用于类统计信息,静态变量是可以通过一个类的对象访问和更改的。静态常量静态常量是不能更改只能够访问。往往是一个类提供的特殊数值,例如,Math类中定义了一个静态量:publicclassMath{……publicstaticfinaldoublePI=3.1.4159265358979323846;}4、静态字段4、静态字段

声明一个方法为static至少有两重含义:(1)使用这个方法时,应该使用类名做前缀,而不是某一个具体的对象名;(Integer.parseInt(),Math.random()等等)(2)成员的方法是属于某个对象的方法,每个对象都有自己的成员方法;而static的方法是属于整个类的,它在内存中的代码段将随着类分配和装载,不被任何一个对象专有。5、静态方法涵义声明一个方法为static至少有两重含义:5、(1)由于static方法是属于整个类的,所以它不能操纵和处理对象的成员变量,而只能处理静态变量;

反过来,成员方法可以访问静态变量或常量。

(2)同理,static方法中也不能访问成员方法;

反过来,成员方法中可以访问静态方法。概括一下:静态方法不可以访问成员,反之可以6、静态方法和成员变量、方法关系6、静态方法和成员变量、方法关系7、main方法

main方法是特殊的静态方法。通过它执行程序,当程序开始执行时,还不存在任何对象。静态方法被执行,并构造程序所需的对象。提示每个类都可以有一个main方法。这是对类进行单元测试的一个很方便技巧。

7、main方法main方法是特殊的静态方法。8、静态嵌套类一个static修饰的静态的类也可以嵌套在另一个一般类中,称为静态嵌套类,可以理解为类的静态成员。详细的例子,见:书上4.13.8、静态嵌套类一个static修饰的静态的类也可以嵌套在另三、最终类、最终属性和最终方法三、最终类、最终属性和最终方法1、最终修饰符final是最终修饰符,它可以修饰类、属性和方法。本身英文含义是“最终的”;它在java中意味,不能够改变1、最终修饰符final是最终修饰符,它可以修饰类、属性和方2、最终类

如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。被定义成final的类,通常是一些有特殊作用的、用来完成标准功能的类,将一个类定义为final则可以将它的内容、属性和功能固定下来。例如:类库中很多类都是final的,如:System,String,其它基本类型的包装类(Integer),以及Math类等等。2、最终类final定义的属性,后来不能够改变(重新赋值)许多程序设计语言把这种数据称为“常量”或“常数”。常数主要应用于下述两个方面:

1)静态常量,要加上static关键词,可以通过类名直接引用;

注意:类库很多类都定义有静态常量,例如Math.PI

3、最终属性final定义的属性,后来不能够改变(重新赋值)32)成员常量,在运行期初始化的一个值,我们不希望它发生变化可以把一个成员属性定义为final(不能改变的)。注意:在对象被构造时,这种字段必须被初始化。即,必须保证在每一个构造方法结束之前其值已被设定。以后字段的值不能改变。例如:我们定义一个SCHOOL_NAME常量,如下:publicfinalStringSCHOOL_NAME=“sias”;2)成员常量,在运行期初始化的一个值,我们不希望它发生变化

所以要使用final方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。采用final方法的第二个理由是程序执行的效率。

4、最终方法4、最终方法本讲小结介绍了静态类型的变量、方法,静态变量如何在类似于全局变量,它的值如何被所有对象所共享;介绍了我们如何使用抽象类来定义现实事物中的抽象继承关系;介绍了final关键词定义的常量,以及如何通过它来定义最终方法和最终类;本讲小结介绍了静态类型的变量、方法,课后作业 做课后的4,5,6;把上一周的Employee类中多定义一个静态变量count;通过它来统计对象产生的数量;定义一个交通工具(Transportation)的抽象类(可具有name和speed属性),上一周我们通过Plane类定义了的飞机,再定义一个Vehicle(汽车类),使Plane和Vehicle类继承交通工具类,Plane类具有独特的属性,如机翼(wing);Vehicle类可以具有轮胎(wheel),抽象方法自定。。课后作业 做课后的4,5,6;四、其他类库里的常见类四、其他类库里的常见类Java语言概述311.Object类-类中的“黄帝”是一个特殊的类,所有类(包括类库中的和用开发者创作的类都属于其子类,并继承其内容)Object类是所有类的根.每个类都以它来作为超类,所有的类,包括数组(arrays),都可实现覆盖Object类中的方法.每个类都隐藏地扩展了此类,即等同于在类地声明时加入,“extendsObject”Java语言概述311.Object类-类中的“黄帝”是一Java语言概述32Object类的方法常用的方法:StringtoString()--输出关于对象的描述信息,可以被覆盖返回对象的字符串表示。Object的方法返回一个字符串、包含该对象的类名、一个@字符和实例散列码的十六进制表示。例如可以在Plane类中有toString方法。方法为:

publicStringtoString(){ return("speedis:"+speed+"\nlookis:"+look);}

Java语言概述32Object类的方法常用的方法:protected

Object

clone()

创建并返回此对象的一个副本。(在子类中不要依赖Object的这个方法。)

booleanequals(Object

obj)

指示某个其他对象是否与此对象“相等”。(在子类中不要依赖Object的这个方法。)protected

voidfinalize()

当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

Class

getClass()

返回一个对象的运行时类。

InthashCode()

返回该对象的哈希码值。protected

Objectclone()

2.Scanner类Scanner类是一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。在java.util包下;使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的next方法将得到的标记转换为不同类型的值。

可以构造一个新的Scanner,它生成的值是从指定的输入流扫描的。构造器型构为Scanner(InputStreamsource);2.Scanner类Scanner类是一个可以使用正则表达以下代码使用户能够从System.in中读取一个字符串值:Scannersc=newScanner(System.in);Stringi=sc.next();以下代码使用户能够从System.in中读取一个整数:Scannersc=newScanner(System.in);inti=sc.nextInt();以下代码使用户能够从System.in中读取一个浮点值数:Scannersc=newScanner(System.in);doublei=sc.nextDouble();以下代码使用户能够从System.in中读取一个字符串值3.InputStreamReder类-另外输入方法InputStreamReader是字节流通向字符流的桥梁:它使用指定的字符集读取字节并将其解码为字符。为了达到最高效率,可要考虑在BufferedReader内包装InputStreamReader。

BufferedReaderbuf;buf=newBufferedReader(newInputStreamReader(System.in));3.InputStreamReder类-另外输入方法InpBufferedReader类可以从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取;提供下述读取方法

intread()

读取单个字符。

Intread(char[]

cbuf,int

off,int

len)

将字符读入数组的某一部分。

String

readLine()

读取一个文本行。BufferedReader类可以从字符输入流中读取文本,缓4.Calendar类是一个抽象类,具体实现类有GregorianCalendar,提供了世界上大多数国家/地区使用的标准日历系统4.Calendar类是一个抽象类,具体实现类有Grego知识实践回顾1、编译单元组织灵活,一个编译单元可以有多个类,在实验中是两个类,即Computer和Tester,两个类一个是计算机类,一个是测试类;2、一个类可以包括成员属性和成员方法;成员属性一般定义为private范围,成员方法为public范围;3、方法如定义为private,是内部helper方法,数据隐藏部分,其他类无法直接使用知识实践回顾1、编译单元组织灵活,一个编译单元可以有多个类,4、类定义好后,通过类进行对象的实例化和初始化。(对于成员变量初始化顺序,1.声明时初始化2.初始化代码块初始化3.构造器初始化)如果没有给类定义无参数构造器,则编译器创建对象不带参数时,会隐式调用构造,初始化成员变量为系统默认值(P133表6-3)。5、成员方法的访问方式(在另一个类中)对象名.方法名

变量=对象名.方法名

//如果有返回值4、类定义好后,通过类进行对象的实例化和初始化。(对于成员变6、作用范围,由小到大有四种,依次为private,default,protected,public其中对于类、属性,和方法适用的如下:类:public,default,private(内部类)属性:四种都有,一般是private方法:public,default,private6、作用范围,由小到大有四种,依次为private,def第5讲面对对象编程基础(下)西亚斯学院计算机系姜斌2009年第5讲面对对象编程基础(下)西亚斯学院计算机系姜斌第4章

类和对象

一、包二、静态修饰符*三、最终类、最终属性、最终方法(final)四、其他类库里的常见类本章小结思考与练习

第4章类和对象

一、包一、包一、包1、包概念以及类库中的包Java允许把多个类收集在一起成为一组,称作包(package),管理类的一种组织形式。标准Java库被分类成许多的包,其中包括java.lang、java.util和等等。(注意java.lang包是基本语言包,是默认导入包)按功能划分分层的1、包概念以及类库中的包Java允许把多个类收集在一起成为一2、系统默认包如果我们没有定义包,编译后所有class文件会当前目录中,Java会认为当前目录所有类在一个匿名包中,如果使用默认访问范围,这些类文件可以相互访问。2、系统默认包如果我们没有定义包,编译后所有class文件会3、如何创建用户包创建包,我们可以通过package语句创建自己的包,包名的命名约定1)可以多个英文单词的名称,但必须全小写字母;2)当存在多层时,可以参考域名的反向定义;Sputer_app.*;3)如果不是规范名称,可转为合法的名称注意:package语句一定要在第一行,即import之前(课下可以练习一下类的访问控制练习,对照一下public和default范围的区别)3、如何创建用户包创建包,我们可以通过package语句创建4、包使用中的作用范围例子:定义两个包one和two,在包one中包含一个类A,在包two中B,C思考:对于default和public来修饰类,范围有何区别? 对于default和public来修饰属性和方法,范围又有何区别?见例子4、包使用中的作用范围例子:定义两个包one和two,在包o二、静态修饰符、静态字段和方法二、静态修饰符、静态字段和方法1、静态修饰符static称为静态修饰符,它可以修饰类中的属性和方法。使用static(静态)关键字,静态属性具有如下的要求:

1)一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象;

2)被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类属性,而不属于任何一个类的具体对象。

1、静态修饰符static称为静态修饰符,它可以修饰类2、静态属性静态属性的特点:静态属性类似于其他语言的全局变量;static换句话说,对于该类的任何一个具体对象而言,静态属性是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值;同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作;静态属性的值也可通过对象获得到。2、静态属性静态属性的特点:静态变量,对应一个类只有一份,对于成员变量,每个对象都有独立的一份;例如:此处的count用于统计我们创建对象的个数,它的初值为count=0;等我们创建三个对象后,它的值应该为3。newnewnew俺是黄色的**类似于其他语言全局变量-Stringcolorintcount(static)Face(脸)俺是蓝色的俺是红色的

静态属性图示静态变量,对应一个类只有一份,对于成员变量,每个对象都有独立Color=“黄”ColorColorcountColor=“黄”ColorColorc3、静态方法另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。(通过类名来访问这个方法)static一项要的用途就是定义提供功能操作的方法,帮助我们在不必创建对象的前提下调用那个方法,调用方便。

3、静态方法另一种情形是我们需要一个特殊的方法,它没有与这个包括静态变量和静态常量。静态变量常常用于类统计信息,静态变量是可以通过一个类的对象访问和更改的。静态常量静态常量是不能更改只能够访问。往往是一个类提供的特殊数值,例如,Math类中定义了一个静态量:publicclassMath{……publicstaticfinaldoublePI=3.1.4159265358979323846;}4、静态字段4、静态字段

声明一个方法为static至少有两重含义:(1)使用这个方法时,应该使用类名做前缀,而不是某一个具体的对象名;(Integer.parseInt(),Math.random()等等)(2)成员的方法是属于某个对象的方法,每个对象都有自己的成员方法;而static的方法是属于整个类的,它在内存中的代码段将随着类分配和装载,不被任何一个对象专有。5、静态方法涵义声明一个方法为static至少有两重含义:5、(1)由于static方法是属于整个类的,所以它不能操纵和处理对象的成员变量,而只能处理静态变量;

反过来,成员方法可以访问静态变量或常量。

(2)同理,static方法中也不能访问成员方法;

反过来,成员方法中可以访问静态方法。概括一下:静态方法不可以访问成员,反之可以6、静态方法和成员变量、方法关系6、静态方法和成员变量、方法关系7、main方法

main方法是特殊的静态方法。通过它执行程序,当程序开始执行时,还不存在任何对象。静态方法被执行,并构造程序所需的对象。提示每个类都可以有一个main方法。这是对类进行单元测试的一个很方便技巧。

7、main方法main方法是特殊的静态方法。8、静态嵌套类一个static修饰的静态的类也可以嵌套在另一个一般类中,称为静态嵌套类,可以理解为类的静态成员。详细的例子,见:书上4.13.8、静态嵌套类一个static修饰的静态的类也可以嵌套在另三、最终类、最终属性和最终方法三、最终类、最终属性和最终方法1、最终修饰符final是最终修饰符,它可以修饰类、属性和方法。本身英文含义是“最终的”;它在java中意味,不能够改变1、最终修饰符final是最终修饰符,它可以修饰类、属性和方2、最终类

如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。被定义成final的类,通常是一些有特殊作用的、用来完成标准功能的类,将一个类定义为final则可以将它的内容、属性和功能固定下来。例如:类库中很多类都是final的,如:System,String,其它基本类型的包装类(Integer),以及Math类等等。2、最终类final定义的属性,后来不能够改变(重新赋值)许多程序设计语言把这种数据称为“常量”或“常数”。常数主要应用于下述两个方面:

1)静态常量,要加上static关键词,可以通过类名直接引用;

注意:类库很多类都定义有静态常量,例如Math.PI

3、最终属性final定义的属性,后来不能够改变(重新赋值)32)成员常量,在运行期初始化的一个值,我们不希望它发生变化可以把一个成员属性定义为final(不能改变的)。注意:在对象被构造时,这种字段必须被初始化。即,必须保证在每一个构造方法结束之前其值已被设定。以后字段的值不能改变。例如:我们定义一个SCHOOL_NAME常量,如下:publicfinalStringSCHOOL_NAME=“sias”;2)成员常量,在运行期初始化的一个值,我们不希望它发生变化

所以要使用final方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。采用final方法的第二个理由是程序执行的效率。

4、最终方法4、最终方法本讲小结介绍了静态类型的变量、方法,静态变量如何在类似于全局变量,它的值如何被所有对象所共享;介绍了我们如何使用抽象类来定义现实事物中的抽象继承关系;介绍了final关键词定义的常量,以及如何通过它来定义最终方法和最终类;本讲小结介绍了静态类型的变量、方法,课后作业 做课后的4,5,6;把上一周的Employee类中多定义一个静态变量count;通过它来统计对象产生的数量;定义一个交通工具(Transportation)的抽象类(可具有name和speed属性),上一周我们通过Plane类定义了的飞机,再定义一个Vehicle(汽车类),使Plane和Vehicle类继承交通工具类,Plane类具有独特的属性,如机翼(wing);Vehicle类可以具有轮胎(wheel),抽象方法自定。。课后作业 做课后的4,5,6;四、其他类库里的常见类四、其他类库里的常见类Java语言概述691.Object类-类中的“黄帝”是一个特殊的类,所有类(包括类库中的和用开发者创作的类都属于其子类,并继承其内容)Object类是所有类的根.每个类都以它来作为超类,所有的类,包括数组(arrays),都可实现覆盖Object类中的方法.每个类都隐藏地扩展了此类,即等同于在类地声明时加入,“extendsObject”Java语言概述311.Object类-类中的“黄帝”是一Java语言概述70Object类的方法常用的方法:StringtoString()--输出关于对象的描述信息,可以被覆盖返回对象的字符串表示。Object的方法返回一个字符串、包含该对象的类名、一个@字符和实例散列码的十六进制表示。例如可以在Plane类中有toString方法。方法为:

publicStringtoString(){ return("speedis:"+speed+"\nlookis:"+look);}

Java语言概述32Object类的方法常用的方法:protected

Object

clone()

创建并返回此对象的一个副本。(在子类中不要依赖Object的这个方法。)

booleanequals(Object

obj)

指示某个其他对象是否与此对象“相等”。(在子类中不要依赖Object的这

温馨提示

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

评论

0/150

提交评论