版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 类与对象类与对象本章学习目标本章学习目标 本章介绍本章介绍Java的核心概念类与对象,是学习的核心概念类与对象,是学习Java编程的关键之一,学习时应当深入理解切实掌握。编程的关键之一,学习时应当深入理解切实掌握。掌握类的概念,掌握类的成员变量和成员方法的概念。掌握类的概念,掌握类的成员变量和成员方法的概念。理解自定义类与类库,了解常用的理解自定义类与类库,了解常用的Java类库和使用类类库和使用类库的方法。库的方法。掌握对象的概念、创建对象的方法。掌握对象的概念、创建对象的方法。掌握对象的成员变量和成员方法的概念和引用成员变掌握对象的成员变量和成员方法的概念和引用成员变量、调用
2、成员方法的方法。量、调用成员方法的方法。掌握类的构造方法的本质和用法。掌握类的构造方法的本质和用法。第三章第三章 类与对象类与对象3.1.1 3.1.1 类的声明类的声明 类声明定义一个类的名称、访问权限、与其他类的关系等。声明类的格式为:类声明定义一个类的名称、访问权限、与其他类的关系等。声明类的格式为: 类修饰符类修饰符 class class 类名类名 extends extends 父类名父类名 implements implements接口名表接口名表 类体类体 说明:说明:class class 声明类的关键字。声明类的关键字。 extends extends 指明本类继承的父类,
3、在其后指定父类名指明本类继承的父类,在其后指定父类名 implements implements 指明本类使用的接口,在其后指定接口名表指明本类使用的接口,在其后指定接口名表 类修饰符类修饰符 用于指定类的使用特性和访问权限,例如类是否为抽象类或最终类等。可取以用于指定类的使用特性和访问权限,例如类是否为抽象类或最终类等。可取以下三种之一:下三种之一: public public 表明本类是共有类,在本包与其他包内均可访问。表明本类是共有类,在本包与其他包内均可访问。 abstract abstract 表明本类为抽象类,必须被继承后才能使用。表明本类为抽象类,必须被继承后才能使用。 fina
4、l final 表明本类为最终类,不能被其他类继承。表明本类为最终类,不能被其他类继承。 类声明紧接一对大括号,在大括号中是类体。类声明紧接一对大括号,在大括号中是类体。3.1 3.1 类类第三章第三章 类与对象类与对象3.1.2 3.1.2 类体类体 类体中定义了本类所有的成员,包含成员变量和成员类体中定义了本类所有的成员,包含成员变量和成员方法。成员方法是对成员变量进行的操作,在类体中不但方法。成员方法是对成员变量进行的操作,在类体中不但要定义方法,还要实现该方法。类主体的结构如下:要定义方法,还要实现该方法。类主体的结构如下: 3.1 3.1 类类第三章第三章 类与对象类与对象3.1.3
5、 3.1.3 类的成员变量类的成员变量 声明成员变量时应给出变量名及其所属的类型,同时还声明成员变量时应给出变量名及其所属的类型,同时还可以指定其他特性。其声明格式如下:可以指定其他特性。其声明格式如下: 其中成员变量的修饰符有以下其中成员变量的修饰符有以下7 7种:种: public public 指明此变量可以在任何地方访问。指明此变量可以在任何地方访问。 private private 指明此变量只可以在本类中访问。指明此变量只可以在本类中访问。 friendly friendly 指明此变量只可以在本包中访问,这是指明此变量只可以在本包中访问,这是默默 认的修饰符。认的修饰符。 pro
6、tected protected 指明此变量可以在本包及其子类中访问。指明此变量可以在本包及其子类中访问。 private protected private protected 指明此变量可以在本类及其指明此变量可以在本类及其子类子类 中访中访 3.1 3.1 类类第三章第三章 类与对象类与对象 static static 指明此变量是一个类变量,只存在于类指明此变量是一个类变量,只存在于类中,而不存在于对象中。中,而不存在于对象中。 final final 指明此变量不能被修改,实际相当于常量。指明此变量不能被修改,实际相当于常量。 类的成员变量必须在类体内声明,且不能放在方法体类的成员变
7、量必须在类体内声明,且不能放在方法体中。例如,下面声明了一个表示日期的类中。例如,下面声明了一个表示日期的类Date1Date1,其中有,其中有三个成员变量三个成员变量yearyear、monthmonth和和dayday,分别用于记录日期的年、,分别用于记录日期的年、月、日。月、日。 public class Date1 / public class Date1 /类声明类声明 int year, month, day int year, month, day; / /声明三个成员变量声明三个成员变量3.1 3.1 类类第三章第三章 类与对象类与对象3.1.4 3.1.4 类的成员方法类的成
8、员方法 类的行为即对数据的操作由它的方法实现。方法的格式分为两部分:方类的行为即对数据的操作由它的方法实现。方法的格式分为两部分:方法声明和实现方法的方法体。声明成员方法的格式如下:法声明和实现方法的方法体。声明成员方法的格式如下: ( ( ) ) 方法的修饰符用于设置方法的使用范围及使用方式,有以下方法的修饰符用于设置方法的使用范围及使用方式,有以下9 9种情况:种情况: public public 指明此方法可以在任何地方访问。指明此方法可以在任何地方访问。 private private 指明此方法只可以由本类中的方法访问。指明此方法只可以由本类中的方法访问。 friendly frie
9、ndly 指明此方法可以由本类中的方法和本包中其他类中的方法指明此方法可以由本类中的方法和本包中其他类中的方法访问。访问。 protected protected 指明此方法可以由本类及其子类中的方法访问。指明此方法可以由本类及其子类中的方法访问。 static static 指明此方法是一个类方法。指明此方法是一个类方法。 final final 指明此方法不能被子类重载。指明此方法不能被子类重载。 native native 指明此方法是一个本地方法。指明此方法是一个本地方法。 abstract abstract 指明此方法是一个抽象方法,必须在子类中重载。指明此方法是一个抽象方法,必须在
10、子类中重载。 synchronized synchronized 指明此方法是一个同步方法,在多线程中用于同步。指明此方法是一个同步方法,在多线程中用于同步。3.1 3.1 类类第三章第三章 类与对象类与对象3.2.1 3.2.1 自定义类与类库自定义类与类库 Java Java的类有两种,前面介绍的是用户编程时自定义的的类有两种,前面介绍的是用户编程时自定义的类,实际编程时还需要使用大量的系统定义好的类,即类,实际编程时还需要使用大量的系统定义好的类,即JavaJava类库中的类。自定义类的用途有两个,其一是为了实类库中的类。自定义类的用途有两个,其一是为了实现某一功能由用户编写的类;其二是
11、在自定义的类中引用现某一功能由用户编写的类;其二是在自定义的类中引用JavaJava类库中的类。后者单独使用的情况不多,往往与第一类库中的类。后者单独使用的情况不多,往往与第一种情况结合使用,即在实现用户的功能时大量调用种情况结合使用,即在实现用户的功能时大量调用JavaJava类类库中的类。库中的类。 可见,类库是可见,类库是JavaJava语言的重要组成部分。语言的重要组成部分。JavaJava语言由语言由语法规则和类库两部分组成,语法规则确定语法规则和类库两部分组成,语法规则确定JavaJava程序的书程序的书写规范,类库则提供了写规范,类库则提供了JavaJava程序与运行它的系统软件
12、之间程序与运行它的系统软件之间的接口。的接口。3.2 Java3.2 Java的类库的类库第三章第三章 类与对象类与对象 Java Java类库是由其他开发人员或软件供应商编写好的类库是由其他开发人员或软件供应商编写好的JavaJava程序模块,每个模块通常对应一种特定的基本功能和程序模块,每个模块通常对应一种特定的基本功能和任务,这样当用户编写的任务,这样当用户编写的JavaJava程序需要完成其中某一功能程序需要完成其中某一功能的时候,就可以直接利用这些现成的类库,而不需要一切的时候,就可以直接利用这些现成的类库,而不需要一切从头编写。所以,学习从头编写。所以,学习JavaJava语言程序
13、设计,应当把注意力语言程序设计,应当把注意力集中在两个方面:一方面是学习其语法规则,因为这是编集中在两个方面:一方面是学习其语法规则,因为这是编写写JavaJava程序的基本功。另一方面是学习使用类库,这对于程序的基本功。另一方面是学习使用类库,这对于提高编程效率和编程质量是决定性的。在一定程度上来讲,提高编程效率和编程质量是决定性的。在一定程度上来讲,能否熟练地拿握尽可能多的能否熟练地拿握尽可能多的JavaJava类库,决定了类库,决定了JavaJava编程能编程能力的高低。力的高低。 这些系统定义好的类根据实现的功能不同,被划分成这些系统定义好的类根据实现的功能不同,被划分成不同的集合。每
14、个集合是一个包,合称为类库。不同的集合。每个集合是一个包,合称为类库。JavaJava的类的类库是系统提供的已实现的标准类的集合,是库是系统提供的已实现的标准类的集合,是JavaJava编程的编程的APIAPI,这些类库称为基础类库。,这些类库称为基础类库。3.2 Java3.2 Java的类库的类库第三章第三章 类与对象类与对象3.2.2 Java3.2.2 Java的常用类库的常用类库 本书将介绍的是本书将介绍的是JavaJava开发工具包开发工具包JDKJDKJava Java development Kitdevelopment Kit的的1.41.4版本。在版本。在JDKJDK中包括
15、了开发、运中包括了开发、运行行JavaJava程序所需的工具,如程序所需的工具,如JavaJava的基本组件、库、编译器、的基本组件、库、编译器、解释器等。下面对经常使用的包加以介绍。解释器等。下面对经常使用的包加以介绍。 1 1java.langjava.lang包包 java.lang java.lang包是包是JavaJava语言的核心类库,包含了运行语言的核心类库,包含了运行JavaJava程序必不可少的系统类,如基本数据类型、基本数学程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个函数、字符串处理、线程、异常处理类等。每个JavaJava程序程
16、序运行时,系统都会自动地引入运行时,系统都会自动地引入java.langjava.lang包,所以这个包包,所以这个包的加载是缺省的。的加载是缺省的。3.2 Java3.2 Java的类库的类库第三章第三章 类与对象类与对象 2 2java.iojava.io包包 java.io java.io包是包是JavaJava语言的标准输入语言的标准输入/ /输出类库,包含了实现输出类库,包含了实现JavaJava程序与操作程序与操作系统、用户界面以及其他系统、用户界面以及其他JavaJava程序做数据交换所使用的类,如基本输入输出程序做数据交换所使用的类,如基本输入输出流、文件输入输出流等。凡是需要
17、完成与操作系统有关的较底层的输入输出流、文件输入输出流等。凡是需要完成与操作系统有关的较底层的输入输出操作的操作的JavaJava程序,都要用到程序,都要用到java.iojava.io包。包。 3 3java.utiljava.util包包 java.util java.util包包括了包包括了JavaJava语言中的一些低级的实用工具,如处理时间的语言中的一些低级的实用工具,如处理时间的DateDate类,处理变长数组的类,处理变长数组的VectorVector类等。类等。 4 4java.awtjava.awt包包 java.awt java.awt包是包是JavaJava语言用来构建图
18、形用户界面的类库,它包括了许多界面语言用来构建图形用户界面的类库,它包括了许多界面元素和资源,主要在三个方面提供界面设计支持:元素和资源,主要在三个方面提供界面设计支持: 低级绘图操作,如低级绘图操作,如GraphicsGraphics类等;类等; 图形界面组件和布局管理,如图形界面组件和布局管理,如ContainerContainer类、类、LayoutMtManagerLayoutMtManager接口等;接口等; 用户交互控制和事件响应,如用户交互控制和事件响应,如EventEvent类。类。 利用利用java.awtjava.awt包,开发人员可以很方便地编写出美观、方便、标准化的应包
19、,开发人员可以很方便地编写出美观、方便、标准化的应用程序界面。用程序界面。3.2 Java3.2 Java的类库的类库第三章第三章 类与对象类与对象 5 5java.awt.imagejava.awt.image包包 java.awt.image java.awt.image包是用来处理和操纵来自于网上的图片的包是用来处理和操纵来自于网上的图片的JavaJava工具类库。工具类库。 6 6java.appletjava.applet包包 java.applet java.applet包是用来实现运行于包是用来实现运行于InternetInternet浏览器中的浏览器中的Java Java Ap
20、pletApplet的工具类库,它包含少量几个接口和一个非常有用的类的工具类库,它包含少量几个接口和一个非常有用的类javn.applet.Appletjavn.applet.Applet。 7 7javajava包包 java java包是包是JavaJava语言用来实现网络功能的类库。语言用来实现网络功能的类库。3.2 Java3.2 Java的类库的类库第三章第三章 类与对象类与对象 8 8 java.util.zip java.util.zip包包 java.util.zip java.util.zip包用来实现文件压缩功能。包用来实现文件压缩功能。 9 9java.awt.datat
21、ransferjava.awt.datatransfer包包 java.awt.datatransfer java.awt.datatransfer包提供了处理数据包提供了处理数据传输的工具类,包括剪贴板、字符串发送器等。传输的工具类,包括剪贴板、字符串发送器等。 10 10java.awt.eventjava.awt.event包包 java.awt.event java.awt.event包使得程序可以用不同的方包使得程序可以用不同的方式来处理不同类型的事件,并使每个图形界面的式来处理不同类型的事件,并使每个图形界面的元素本身拥有处理事件的能力。元素本身拥有处理事件的能力。 11 11ja
22、va.sqljava.sql包包 java.sql java.sql包是实现包是实现JDBCJDBC的类库。利用这个包的类库。利用这个包可以使可以使JavaJava程序具有访问不同种类的数据库的功程序具有访问不同种类的数据库的功能,如能,如OracleOracle,SybaseSybase,DB2DB2,SQLServerSQLServer等。等。3.2 Java3.2 Java的类库的类库第三章第三章 类与对象类与对象 使用类库中类的前提是所引用的系统类必须是用户程序可见的类。使用类库中类的前提是所引用的系统类必须是用户程序可见的类。为此用户程序需要用为此用户程序需要用importimpor
23、t语句引入所用到的系统类或系统类所在的语句引入所用到的系统类或系统类所在的包。例如每一个使用图形用户界面的程序,都应该在程序的前部用语包。例如每一个使用图形用户界面的程序,都应该在程序的前部用语句句 import java.awt. import java.awt.* *; ; import java.awt.event. import java.awt.event.* *; ; 引入引入Java.awtJava.awt包和包和java.awt.eventjava.awt.event包。类库包中的程序都是字节包。类库包中的程序都是字节码形式的程序,利用码形式的程序,利用importimport
24、语句将一个包引人到程序里,就相当于在语句将一个包引人到程序里,就相当于在编译过程中将该包中所有系统类的字节码加人到用户的编译过程中将该包中所有系统类的字节码加人到用户的JavaJava程序中,程序中,这样用户这样用户JavaJava程序就可以使用这些系统类及其中的各种功能。程序就可以使用这些系统类及其中的各种功能。3.2.3 3.2.3 使用类库的方法使用类库的方法第三章第三章 类与对象类与对象 使用类库中的类有三种方式:使用类库中的类有三种方式: (1 1继承系统类。在用户程序里创建系统类的子类,例如每个继承系统类。在用户程序里创建系统类的子类,例如每个Java AppletJava App
25、let的主类都是的主类都是java.appletjava.applet包中的包中的AppletApplet类的子类。类的子类。 (2 2创建系统类的对象。例如图形界面的程序中要接受用户的创建系统类的对象。例如图形界面的程序中要接受用户的输入时,就可以创建系统类输入时,就可以创建系统类TextfieldTextfield类的对象来完成这个任务。类的对象来完成这个任务。 (3 3直接使用系统类。例如在字符界面向系统标准输出输出字直接使用系统类。例如在字符界面向系统标准输出输出字符串时使用的方法即符串时使用的方法即System.out.Println( )System.out.Println( ),
26、就是系统类的一个,就是系统类的一个方法。方法。 使用类库,编写使用类库,编写JavaJava程序时就不必一切从头做起绝大多数用程序时就不必一切从头做起绝大多数用户也没有能力从头做起),避免了代码的重复和可能的错误,提高户也没有能力从头做起),避免了代码的重复和可能的错误,提高了编程的效率。用户程序中系统类使用得越多、越准确,程序的质了编程的效率。用户程序中系统类使用得越多、越准确,程序的质量就越高;而离开了类库,量就越高;而离开了类库,JavaJava程序几乎寸步难行。所以,要想掌程序几乎寸步难行。所以,要想掌握好握好JavaJava的面向对象编程,编写出高质量的程序,必须对的面向对象编程,编
27、写出高质量的程序,必须对JavaJava的类的类库有足够的了解。库有足够的了解。 3.2.3 3.2.3 使用类库的方法使用类库的方法第三章第三章 类与对象类与对象3.3.1 3.3.1 对象的声明和实例化对象的声明和实例化 对象是类的实例,所以一个对象必定属于一个已知的类。正因为对象是类的实例,所以一个对象必定属于一个已知的类。正因为此,定义一个对象之前应当先声明对象的类。声明对象的格式如下:此,定义一个对象之前应当先声明对象的类。声明对象的格式如下: 类名类名 对象名对象名 对象的声明告诉编译器所声明对象所属的类,要真正实例化对象对象的声明告诉编译器所声明对象所属的类,要真正实例化对象还要
28、使用还要使用newnew运算符,具体的格式是:运算符,具体的格式是: 对象名对象名 = new = new 类的构造方法类的构造方法( )( ) 其中类的构造方法将在其中类的构造方法将在3.3.33.3.3节中介绍。例如,在已经定义了一节中介绍。例如,在已经定义了一个个DateDate类的前提下,先用类的前提下,先用 Date a Date a 声明声明DateDate类的一个对象类的一个对象a a,然后使用,然后使用 a = new Date() a = new Date() 调用调用DateDate类的构造方法类的构造方法Date()Date()实例化对象实例化对象a a。也可以把这两个步
29、。也可以把这两个步骤合并在一起,写成以下的形式,其效果是相同的:骤合并在一起,写成以下的形式,其效果是相同的: Date a = new Date() Date a = new Date()3.3 3.3 对象对象第三章第三章 类与对象类与对象3.3.2 3.3.2 引用成员变量和调用成员方法引用成员变量和调用成员方法 通过对象引用类的成员变量的格式是对象名后跟欲引用的变量通过对象引用类的成员变量的格式是对象名后跟欲引用的变量名,二者中间用点名,二者中间用点“.”“.”隔开,即:隔开,即: 对象名对象名. .变量名变量名 通过对象引用类的成员方法的格式是对象名后跟欲引用的方法通过对象引用类的成员方法的格式是对象名后跟欲引用的方法名加一对括号,二者中间用点名加一对括号,二者中间用点“.”“.”隔开,有的方法需要参数,应隔开,有的方法需要参数,应在括号内给出各个形参,如果不需要参数,也应有一对空的括号。在括号内给出各个形参,如果不需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届宁夏平罗县高三第二次联考语文试卷含解析
- 北京昌平临川育人学校2025届高三压轴卷数学试卷含解析
- 内蒙古重点中学2025届高考压轴卷数学试卷含解析
- 湖北省七市教科研协作体2025届高三下学期第五次调研考试语文试题含解析
- 辽宁省朝阳市建平县二中2025届高三下学期第六次检测英语试卷含解析
- 2025届湖南省衡阳市重点中学高三冲刺模拟数学试卷含解析
- 四川省会理县第一中学2025届高三最后一模数学试题含解析
- 云南省中央民族大附属中学2025届高考英语一模试卷含解析
- 云南省昆明市外国语学校2025届高三第二次诊断性检测英语试卷含解析
- 云贵川高中2025届高三二诊模拟考试语文试卷含解析
- 热处理工艺规程(工艺参数)
- 高龄津贴“免申即享”改革实施方案
- 人工智能导论 课件 项目1、2 人工智能的前世今生、人工智能基础
- 缓冲托辊说明书
- 安抚(氟比洛芬酯注射液)-泌尿外科术后疼痛管理的基础药物
- 国际专利分类(IPC)新版
- 110kV通衢变电站电气监理细则(正式)
- 初识无人机课件
- 世界是永恒发展的 教学设计
- 中共屯垦史作业课件
- 串并联电路中的电流规律ppt
评论
0/150
提交评论