1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,4,章 接口、内部类和,Java API,基础,4.1,接口,4.2,内部类和内部接口,4.3,java.lang,包中的基础类库,4.4,java.util,包中的工具类库,1.3.3,包,2026/4/10 周五,1,4.1,接口,4.1.1,接口与实现接口的类,4.1.2,用接口实现多继承,接口提供方法声明与方法实现相分离的机制,使多个类之间表现出共同的行为能力。接口机制使,Java,具有实现多重继承的
2、能力。,2026/4/10 周五,2,4.1.1,接口与实现接口的类,1,.,声明接口,public,interface,接口,extends,父接口,public static final,数据类型 成员变量,=,常量值,;,public abstract,返回值类型 成员方法,(,参数列表,);,在,Java,中,,接口是一种,引用数据类型,,是一组常量和抽象方法的集合。,例如,:,public interface Area,/,可计算面积接口,public,abstract,double area();,/,计算面积,2026/4/10 周五,3,2.,声明实现接口的类,格式:,修饰符,
3、class,类,extends,父类,implements,接口列表,例如:,public class Rectangle implements Area,4.1.1,接口与实现接口的类(续),【,例,4.1】,可计算面积接口与实现该接口的矩形类。,2026/4/10 周五,4,3.,接口是一种引用数据类型,Area g=new Rectangle(10,20);,/,接口变量,g,引用实现接口的类的对象,System.out.println(g.toString,();/,执行,Rectangle,的方法,g=new Ellipse(10,20);/g,引用椭圆对象,System.out.p
4、rintln(g.toString,();/,执行,Ellipse,的方法,4.1.1,接口与实现接口的类(续),【,例,4.2】,可计算体积接口与实现该接口的长方体类。,2026/4/10 周五,5,【,例,4.3】,球类实现多个接口。,4.1.1,接口与实现接口的类(续),2026/4/10 周五,6,接口及接口中成员的访问权限都是,public,。,接口中的成员方法都是公有的、抽象的实例成员方法。,public abstract,接口中的所有抽象方法必须全部被实现接口的类覆盖。,接口中的,成员变量都是常量,。,public static,final,接口不能被实例化。,接口是引用数据类型
5、可以声明接口的变量。,Area,g=new,Rectangle,(10,20);,4.,接口的特点,4.1.1,接口与实现接口的类(续,),2026/4/10 周五,7,4.1.2,用接口实现多继承,一个类可以继承一个父类并实现多个接口,public interface,AreaVolumn,extends,Area,Volume,public class Globe implements,AreaVolume,2026/4/10 周五,8,相同点:,两者都包含抽象方法。,两者都不能被实例化。,两者都是引用数据类型。,不同点:,抽象类约定,多个子类之间,共同使用的方法;接口约定,多个互不相关
6、类,之间共同使用的方法。,抽象类与子类之间采用单重继承机制;一个类实现多个接口则实现了多重继承的功能。,抽象类及其类中成员具有与普通类一样的访问权限;接口的访问权限有,public,和默认两种,接口中成员的访问权限均是,public,。,抽象类中可以包含非抽象方法,也可以声明构造方法;接口中的方法全部是抽象方法,不能声明构造方法。,抽象类中可以声明成员变量,子类可以对该成员变量赋值;接口中只能声明常量。,2.,接口与抽象类的比较,4.1.2,用接口实现多继承(续),2026/4/10 周五,9,4.2,内部类和内部接口,类与类之间除了继承关系,还存在嵌套关系,即一个类可以声明包含另一个类,被包
7、含的类称为内部类(内嵌类型),包含内部类的类称为外部类(外层类型)。内嵌类型既有类型的特性,也有类中成员的特性。,public class Line /,直线类,外层类型,class Point /,点类,内嵌类型,1,作为类型的特性,内嵌类型不能与外层类型同名。,内部类中可以声明成员变量和成员方法。,内部类可以继承父类或实现接口。,内部类可以声明为抽象类或内部接口。,2026/4/10 周五,10,使用点运算符“,.”,引用内嵌类型:,外层类型,.,内嵌类型,Line.Point,彼此信任,能访问对方的所有成员。,具有类中成员的,4,种访问控制权限。,内部接口总是静态的。,2,作为成员的特性
8、4.2,内部类和内部接口(续),【,例,4.4】,直线类声明内嵌的点类和方向接口。,2026/4/10 周五,11,1.3.3,包,1,问题的提出,2,什么是包,从逻辑概念看,包(,package,)是类的集合,一个包中包含多个类;,从存储概念看,包是类的组织方式,一个包对应一个文件夹,一个文件夹中包含多个字节码文件;,包与类的关系,就像文件夹与文件的关系一样。包中还可以再有子包,称为包等级,子包对应一个子文件夹。,为解决字节码文件存放和类命名的问题,,Java,提供了包机制。,2026/4/10 周五,12,1.3.1,包(续),创建与包同名的文件夹,F:,myjavamypackage,
9、声明类所在的包,package,包,1.,包,2;,例如:,package,mypackage,;,/,声明所在的包,引用包中的类 包,1.,包,2.,类,|,接口,导入包,import,包,1.,包,2.,类,|,接口,|*;,例如:,import,mypackage.Line,;,import,java.awt,.*;,默认包路径:当前文件夹,3,创建、声明和导入包,【,例,1.4】,创建及使用包。,2026/4/10 周五,13,1.3.1,包(续),Java,源程序结构,package,/,声明包,,01,句,import,/,导入包,,0,多句,public class,或,inte
10、rface,/,声明公有类或接口,,01,句,文件名与该名相同,class,/,声明默认类,,0,多句,interface,/,声明接口,,0,多句,2026/4/10 周五,14,Java,的常用包,查看,Java,包中的类,查看,Java,的源程序及包等级,导入,Java,的包,java.lang,语言包,java.util,实用包,java.awt,抽象窗口工具包,java.applet,java.io,输入输出流包,网络包,java.sql,数据库应用,javax.swing,图形用户界面,import,java.util.Date,;,import,java.awt,.*;,解压,J
11、DK,帮助文档,jdk-?-doc.zip,解压,src.zip,1.3.1,包(续),Java API,基础,2026/4/10 周五,15,Object,类,Math,数学类,Comparable,接口,基本数据类型包装类,String,字符串类,Class,类操作类,System,系统类,Runtime,运行时类,补充例:猜数游戏,(,Guess.java,),获得运行时信息(,Runtimeinfo.java,),4.3,java.lang,包中的基础类库,2026/4/10 周五,16,【,补充例,】,计算程序执行的时间,/,Elapsed.java,public class Ela
12、psed,public static void,main(String,args,),long start,end,sum=0;,System.out.println,(a loop from 0 to 1,000,000,000);,start=,System.,currentTimeMillis,();,for(,int,i=0;i 1000000000;i+),sum=,sum,+i*i;,end=,System.,currentTimeMillis,();,System.out.println(Elapsed,time:+(end-start);,2026/4/10 周五,17,【,补
13、充例,】,执行,Java,外部程序,/,ExecDemo.java,public class,ExecDemo,public static void,main(String,args,),Runtime r=,Runtime.getRuntime,();,Process p=null;,try,p=,r.exec,(notepad,);/,程序暂停,1,秒钟,Thread.sleep(1000,);/,关闭外部程序,p.destroy,();,/,改为,p.waitFor,(),catch(Exception e),System.out.println(Error,executing note
14、pad.);,2026/4/10 周五,18,4.4,java.util,包中的工具类库,4.4.1,日期类,4.4.2 Arrays,数组类,4.4.3 Random,随机数序列类,2026/4/10 周五,19,4.4.1,日期类,1,Date,日期类,2,Calendar,类,【,例,4.5】,月历。,【,补充例,】,获得系统当前日期和时间,并按指定格式输出。,【,补充例,】,CalculateDay,.java,2026/4/10 周五,20,4.4.2 Arrays,数组类,比较两个数组是否相等,public static,boolean,equals(int,a,int,b),pu
15、blic static,boolean,equals(Object,a,Object b),填充,public static void,fill(int,a,int,val,),排序,public static void,sort(Object,a),public static void,sort(T,a,Comparator c),二分法(折半)查找,public static,int,binarySearch(Object,a,Object key),public static,int,binarySearch(T,a,T key,Comparator c),【,例,4.6】,对象数组的排
16、序和查找。,2026/4/10 周五,21,4.4.3 Random,随机数序列类,public class Random extends Object implements,java.io.Serializable,public Random()/,创建一个随机数序列,public,Random(long,seed)/seed,指定随机数序列种子,public,int,nextInt,()/,返回下一个随机数,public,int,nextInt(int,n)/,返回下一个随机数(,n,以内),public double,nextDouble,(),书面作业:实验,4.1,、,4.2,2026/4/10 周五,22,谢谢!,2026/4/10 周五,23,






