第四章Java类和对象的高级特征_第1页
第四章Java类和对象的高级特征_第2页
第四章Java类和对象的高级特征_第3页
第四章Java类和对象的高级特征_第4页
第四章Java类和对象的高级特征_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 Java类和对象的高级特征【课前思考】什么是包?什么是接口? 什么是内部类?【学习目标】通过本章的学习,使学生了解包、接口的概念,掌握Java语言程序包、接口的使用方法。除了学习如何使用系统程序包外,还要学习如何把自己编写的类组成程序包的形式。【学习指南】应深刻理解各知识点的概念,使用上一章的编程基础知识及面向对象技术,编写简单的java类,由浅至深,养成风格良好的编程习惯。【难 重 点】接口的使用。【知 识 点】l 接口l 内部类l 包【内 容】第一节 接口接口是抽象类的一种,只包含常量和方法的定义,而没有变量和方法的实现,且其方法都是抽象方法。Ø 定义接口接口是没有实现的

2、方法和变量的集合。接口的定义与类的定义相似,格式为:修饰符interface接口名 方法1; 方法2;定义在接口中的变量全部隐含为final和static。这意味着它们不能被实现接口方法的类改变,这些变量还必须设置初值。如果接口声明为public,则接口中的方法和变量全部为public。例 4.1 声明接口。本例声明了接口Stuednt_info表示学生情况,其中有一个成员变量year和两个成员方法age和output。成员变量year隐含为final和static型,必须设置初值。源程序文件名必须与接口名相同。程序如下: iInterface Student_info /学生情况接口 int

3、 year=2002; int age(); void output();Ø 实现接口接口的实现类似于继承,只是不用extends,而是用关键字implements声明一个类将实现一个接口,其声明格式如下:修饰符class类名extends超类名implements接口名1,接口名2,其中,修饰符可以是public,也可以省略。如果一个类实现一个接口,则必须实现接口中的所有方法,且方法必须声明为public。如果一个类实现多个接口,则用逗号分隔接口列表。例 4.2 实现接口的类。本例声明的类Stuq实现接口Student_info,Stu1类中有自己的两个成员变量name和birth

4、_year,实现接口方法age时使用了接口中的变量year的值。程序如下:public class Stu1 implements Student_info /实现学生情况接口 String name; int birth_year; /类自己的成员变量 public Stu1(String n1,int y) name = n1; birth_year = y; public int age() /实现接口的方法 return year - birth_year; public void output() /实现接口的方法 public static void main (String ar

5、gs) Stu1 s1 = new Stu1("李明",1980); s1.output(); 程序运行结果:李明 22岁由本例可见,一个类实现一个接口,必须给出接口中所有方法的实现。如果不能实现某方法,也必须写出一个空方法。第二节 内部类内部类是在一个类的内部嵌套定义的类,它可以是其它类的成员,也可以在一个语句块的内部定义,还可以在表达式内部匿名定义。内部类有如下特性:² 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称.名字不能与包含它的类名相同。² 可以使用包含它的类的静态和实例成员变量,也可以使用它所在方法的局部变量。²

6、 可以定义为abstract。² 可以声明为private或protected。² 若被声明为static,就变成了顶层类,不能再使用局部变量。² 若想在Inner Class中声明任何static成员,则该Inner Class必须声明为static。内部类的优缺点:² 优点:节省编译后产生的字节码文件的大小² 缺点:使程序结构不清楚第三节 包包(package)是Java提供的一种区别类名空间的机制,是类的组织方式,包对应一个文件夹,包中还可以再有包,称为包等级。Java的常用包有:Java.lang 语言包Java.util 使用包Jav

7、a.awt 抽象窗口工具包Java.text 文本包Java.io 输入输出流的文件包Java.applet Applet应用程序J 网络功能Ø 语言包 语言包java.lang提供Java语言最基础的类。1) Object类是Java类层次的根,所以其他类都是由Object类派生出来的,在Object类中定义的方法,在其他类中都可以使用。2) 数据类型包装类(The Data Type Wrapper)对应Java的8个基本数据类型数据类型包装类也有8个:Byte,Short,Integer,Long,Float,Double,Character和Boolean。3) 字符串类:J

8、ava将字符串作为类来实现,而不强制使用字符数组。字符串有两个类:String和StringBuffer。4) 数字型Math提供一组带常量和数学函数,包括:E和PI常数,求绝对值的abs方法,计算三角函数的sin方法和cos方法,求最小值、最大值min方法和max方法,求随机数的random方法等。5) 系统和运行时类System、Runtime提供访问系统和运行时环境资源。6) 类操作类Class为类提供运行时信息,如名字、类型以及父类。7) 错误和异常处理类Throwable,Exception和Error8) 线程类Thread9) 过程类Process例 4.10 获得运行时信息。本

9、例演示使用Integer类的静态方法将十进制字符串转化为二进制、八进制、十六Ø 实用包l 日期类包括Data、Calendar、GregorianCalandar类,它们描述日期和时间,提供对日期值的许多操作方法,如获得当前日期,比较两个日期,判断日期的先后等l 集合类包括多种集合接口Collection(无序集合)、Set(不重复集合)、List(有序不重复集合)、Enumeration(枚举)等,以及表示数据结构的多个类:LinkedList(链表)、Vector(向量)、Stack(栈)、Hashtable(散列表)、TreeSet(树)等。Ø 文本包Java文本包j

10、ava.text中的Format、DateFormat、SimpleDateFormat等类提供各种文本或日期格式。Ø 引用Java定义的包如果要使用Java包中的类,必须在源程序用import语句导入。import语句的格式 为:import<包名1>.<包名2>.<包名3>···<类名>|*;起中import为关键字,多个包名及类名之间用圆点分隔,“*”表示包中的所有类。Ø 自定义包如果在源文件中没有声明包,那么类名将放在默认包中,这个包没有名字。默认包对于小的程序很适用,但但程序很复杂是,默

11、认包就显的不够用了。除了可以引用Java定义的包之外,程序员还可以定义自己的包。1)包的定义格式:包的定义格式如下:Package <包名>其中,package是关键字,<包名>是标示符。例如:Package Mypackage;Public class Date; 2)设置包的路径: 对于程序员自定义的包Mypackage,系统如何知道这个包在哪里?其他类如何引用他? 我们在D:myjava之中创建一个与包同名的文件夹D:myjavaMypackage,并将编译过的文件(Date1.class)放入该文件夹中。注意:该包名与文件名的大小应该一致。 在添加环境变量cla

12、sspath的路径如下:set classpath=.;C:jdk_02lib;D:myjava 其他类用 import Mypackage.*; 语句可以引用Mypackage包中的类。程序运行时,系统将在D:myjava中寻找Mypackage包。例 4.12 自定义包。本例声明一个完整的日期类NewDate。将编译后的日期类文件NewDate.class放在已建立的包Mypackage中。NewDate类程序如下:package Mypackage;public class NewDate private int year,month,day; public NewDate(int y,

13、int m,int d) year = y; month = (m>=1) & (m<=12) ? m : 1); day = (d>=1) & (d<=31) ? d : 1); public NewDate() this(0,0,0); public static int thisyear() /获得当年的年份 return Calendar.getInstance().get(Calendar.YEAR); public int year() /获得年份 return year; public String toString() /转化为字符串 r

14、eturn year+"-"+month+"-"+day; 在另一程序People.java中,引用Mypackage包中的NewDate类。程序如下:import Mypackage.NewDate; /引用Mypackage包中的NewDate类public class People private String name; private NewDate birth; public static void main(String args) People a = new People("Wangli",1981,2,14); a.output(); public People(String n1,NewDate d1) name = n1; birth = d1; public People(String n1,i

温馨提示

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

评论

0/150

提交评论