第四章 接口、内部类和Java API文档_第1页
第四章 接口、内部类和Java API文档_第2页
第四章 接口、内部类和Java API文档_第3页
第四章 接口、内部类和Java API文档_第4页
第四章 接口、内部类和Java API文档_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、接口、内部类和Java API基础金陵科技学院4 4面向对象编程2复 习nOOP的概念n类和对象nOOP的特点n类的封装性n类的继承性n类的多态性n类的抽象性面向对象编程3主要内容nJAVA的接口n接口的声明与实现n接口的多重继承性n内部类与内部接口nJAVA API常用包n语言包:java.lang(语言包,Object、数学运算符、字符串、线程、异常处理)n实用包:java.util(工具库类,日期、集合等)面向对象编程4接口(interface)n接口是一种特殊的类,是作为一个整体声明的抽象方法和常量n方法:公有、抽象n常量:隐含为public、final、staticn声明接口publ

2、ic interface 接口 extends 父接口列表 public static final 数据类型 成员变量=常量值; public abstract 返回值类型 成员方法(参数列表);面向对象编程5接口(interface)(续)n实现接口n当一个类实现某一接口 时,必须具体实现该 interface 中定义的所有抽象方法,否则为抽象类n修饰符 class 类 extends 父类 implements 接口列表n利用接口可实现多重继承利用接口可实现多重继承n在程序开发的早期建立一组协议而不具体实现n便于设计更合理的类层次,代码更灵活面向对象编程6接口的特点n接口及接口中成员的访问

3、权限都是publicn接口中的成员方法都是公有的、抽象的公有的、抽象的实例实例成员方法n接口中的所有抽象方法必须全部全部被实现接口的类覆盖,否则为必须声明为抽象类n接口中的成员变量都是常量常量n接口不能被实例化接口不能被实例化n接口是引用数据类型面向对象编程7接口(interface)(续)n例:乐器族谱Music.java我们可以使用接口来实现继承吗?InstrumentWindPercussionStringed面向对象编程8【例4.1】可计算面积接口与实现该接口的矩形类。面向对象编程9【例4.2】可计算体积接口与实现该接口的长方体类。面向对象编程10【例4.3】 球类实现多个接口面向对象

4、编程11Java用接口实现多重继承n接口的多继承n接口与抽象类的区别面向对象编程12内部类与内部接口nJava1.1中允许在类体中定义新的类或接口,称为inner classesn内部类的特性:n内部类不能与外部类同名n内部类具有封装性n内部类具有继承性n内部类具有抽象性面向对象编程13内部类与内部接口n作为成员的特性n使用点运算符“.”引用内嵌类型:外层类型.内嵌类型Line.Pointn彼此信任,能访问对方的所有成员。n具有类中成员的4种访问控制权限。n内部接口总是静态的;静态内部类可声明静态成员,但不能引用外部类的实例成员和其他内部类成员n其他类使用内部类成员的例子:TestInner.

5、javan在内部类中区分同名变量的例子:Outer.java内部类与内部接口n课本P106页例4.2面向对象编程14面向对象编程15【例4.4】 直线类声明内嵌的点类和方向接口(选讲) 面向对象编程16Java的类库结构n类库的结构njava.lang、java.util、java.io、java.applet、java.awt、java.awt.event、java.sqln使用JDK Document查看类库n语言基础类库(java.lang)nObject、数据类型包装类、System、Math、String、Runtime、Class、Comparable可比较接口nJava的工具类库

6、(java.util)n日期、数组、向量、栈、链表、散列表、树n要使用包中的类必需要人工导入包(除java.lang包)面向对象编程17语言基础类库:Math类nMath类用来完成常用的数学运算n数学常量:E,PIn数学运算nMath.abs(- 8.09);nMath.exp( 5.7);nMath.random();nMath.sqrt(9.08);nMath.pow( 2,3);nMath.round(99.6);n均为static,使用时无需创建实例n例:MathApp.java面向对象编程18语言基础类库:比较接口4Comparable可比较接口public interface Co

7、mparable int compareTo(T o) /比较对象 是Comparable接口的参数,表示一个类。 4只有实现Comparable接口的类对象可比较大小4Comparator比较接口public interface Comparator int compare(T cobj1,T cobj2) /指定比较两个对象的规则 课本P109页面向对象编程19语言基础类库:数据类型包装类n基本数据类型 vs. 数据类型类boolean vs Boolean, char vs Character等n数据类型包装类n规定了数据类型的最大值、最小值n构造函数:如new Integer(10);

8、n完成不同数据类型间转换,注意不同的数据类使用的方法会有不同 Double.toString(0.08)、String.valueOf(0.08) Double.valueOf(“0.08”).intValue()、Integer.parseInt(“123”)等面向对象编程20语言基础类库:数据类型包装类nInteger类声明:P110Comparable public static final int MIN_VALUE = 0 x80000000;/最小值常量,-231 public static final int MAX_VALUE = 0 x7fffffff; /最大值常量,231

9、-1 public Integer(int value) /构造方法 public Integer(String s) throws NumberFormatException public static int parseInt(String s) throws NumberFormatException /将字符串转换为整数,静态方法 public boolean equals(Object obj) /覆盖Object类中方法 public String toString() /覆盖Object类中方法 public int compareTo(Integer anotherIntege

10、r) /比较两个对象的大小,返回两者之间的差值,实现Comparable接口中方法 public static String toBinaryString(int i) /将i转换成二进制字符串 public static String toOctalString(int i) /将i转换成八进制字符串 public static String toHexString(int i) /将i转换成十六进制字符串 面向对象编程21语言基础类库:String字符串类public final class String extends Object implements java.io.Serializ

11、able, Comparable, CharSequence public String() /构造方法 public String(String original) public String toString() /覆盖Object类中方法 public int length() /返回字符串的长度 public boolean equals(Object obj) /比较字符串是否相等 public boolean equalsIgnoreCase (String s)/忽略字母大小写 public int compareTo(String anotherString) /比较字符串的大

12、小,实现Comparable接口方法 public int compareToIgnoreCase(String str) /比较字符串的大小,忽略字母大小写面向对象编程22语言基础类库:Class类操作类public final class Class public String getName() /返回当前类名字符串 public Class getSuperclass(); /返回当前类的父类 public Package getPackage() /返回当前类所在的包System.out.print(this.getClass().getName()+ );this.getClass

13、().getSuperclass().getName()this.getClass().getPackage().getName() 面向对象编程23语言基础类库:Runtime运行时类public class Runtime extends Object public static Runtime getRuntime() /返回与当前应用程序相联系的运行时环境 public long totalMemory() /返回系统内存空间总量 public long freeMemory() /返回系统内存剩余空间的大小面向对象编程24工具类库:日期(1.1)nCalendar(表示日期和时间)n

14、getInstance( ): 得到表示当前时间的实例nget(int):获取相应信息,如get(Calendar.YEAR)nset(year,month,date):set(Calendar.YEAR,Calendar.MONTH,Calendar.DATE)nset(year,month,date,hour,minute)nGregorianCalendar(Calendar的子类)n实现标准的格林威治时间nDate(1.0):很多方法已deprecatednCalendar.getTime():得到当前时间的Date对象n【例4.5】 月历。面向对象编程25工具类库:Arrays数组类

15、n比较两个数组是否相等public static boolean equals(int a, int b) public static boolean equals(Object a, Object b) n填充public static void fill(int a, int val) n排序public static void sort(Object a)public static void sort(T a, Comparator c) n二分法(折半)查找public static int binarySearch(Object a, Object key) public stati

16、c int binarySearch(T a, T key, Comparator c) 面向对象编程26【例4.5】 对象数组的排序和查找。nPerson对象数组按姓名排序nPerson对象数组按年龄排序 面向对象编程27工具类库:向量类njava.util.Vector n实现链式存储结构、变长的对象数组变长的对象数组序列n适合于如下的情况n需要处理的对象数目不定n序列中元素都是对象,而不是基本数据类型的量n需要做频繁的元素插入和删除n需要定位序列中的对象或其他查找操作面向对象编程28工具类库:向量类(续)n创建向量类的对象Vector MyVector = new Vector(100,

17、50);n向向量序列中添加元素naddElement(添加的对象)ninsertElementAt(添加的对象,添加的位置)n修改序列中的元素nsetElementAt(修改成的对象,修改的位置)面向对象编程29工具类库:向量类(续)n删除向量序列中的元素nremoveElement(删除的对象)nremoveElementAt(删除的位置)nremoveAllElements()n查找序列中的元素nelementAt(查找位置)n缺点:Object的类型不确定n例:CatsAndDogs.javan对象的类型不匹配只能在运行期才能被检测出来面向对象编程30工具类库:栈njava.util.S

18、tack(常用的线性数据结构)n栈底:固定的一端n栈顶:数据元素进出的一端n遵循“ 后进先出”原则LIFOn常用的堆栈操作StackTest.javan创建堆栈:Stack()n压栈操作:push()n弹栈操作:pop()n查看栈顶对象:peek()n查找栈中对象:search(Object o)栈底栈顶弹栈压栈面向对象编程31工具类库:Random随机数序列类 4可获得多个不同的随机数序列public class Random extends Object implements java.io.Serializable public Random() /创建一个随机数序列 public Random(long seed) /seed指定随机数序列种子 public int nextInt() /返回下一个随机数 public in

温馨提示

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

最新文档

评论

0/150

提交评论