《JAVA类和对象的高级特征.ppt》由会员分享,可在线阅读,更多相关《JAVA类和对象的高级特征.ppt(20页珍藏版)》请在三一办公上搜索。
1、1,第四章 JAVA类和对象的高级特征,授课教师:赖涵,重庆工商大学计信学院*,2,本章内容,4.1 抽象类4.2 接口4.3 包4.4 JAVA的API,重庆工商大学计信学院*,3,4.1 抽象类,抽象类java语言中,用abstract 关键字来修饰一个类时,这个类叫做抽象类,用abstract 关键字来修饰一个方法时,这个方法叫做抽象方法。格式如下:abstract class abstractClass/抽象类abstract returnType abstractMethod(paramlist)/抽象方法抽象类必须被继承,抽象方法必须被重写。抽象方法只需声明,无需实现;抽象类不能被
2、实例化,抽象类不一定要包含抽象方法。若类中包含了抽象方法,则该类必须被定义为抽象类。若一个类继承了一个抽象类,则抽象类的抽象方法必须被实现,否则子类必须声明为abstract.,重庆工商大学计信学院*,4,4.2 接口,接口接口是抽象类的一种,只包含常量和方法的定义,而没有变量和方法的实现,且其方法都是抽象方法。它的用处体现在下面几个方面:通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系。通过接口指明多个类需要实现的方法。通过接口了解对象的交互界面,而无需了解对象所对应的类。,重庆工商大学计信学院*,5,4.2 接口,1)接口的定义接口的定义包括接口声明和接口体。接口声明的格式如下:
3、public interface interfaceNameextends listOfSuperInterface extends 子句与类声明的extends子句基本相同,不同的是一个接口可有多个父接口,用逗号隔开,而一个类只能有一个父类。接口体包括常量定义和方法定义常量定义格式为:type NAME=value;该常量被实现该接口的多个类共享;具有public,final,static的属性。在接口中只能声明常量,不可以声明变量。方法体定义格式为:(具有public和abstract属性,不能声明为protected)returnType methodName(paramlist);注意
4、:在接口的实现类中,实现的接口方法必须声明为public,因为接口中定义的方法为public(默认)。所以其实现必须声明为public.否则编译不会通过。,重庆工商大学计信学院*,6,4.2 接口,2)接口的实现在类的声明中用implements子句来表示一个类使用某个接口,在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法。一个类可以实现多个接口,在implements子句中用逗号分开。3)接口类型的使用接口作为一种引用类型来使用。任何实现该接口的类的实例都可以存储在该接口类型的变量中,通过这些变量可以访问类所实现的接口中的方法。,重庆工商大学计信学院*,7,4.3 包(1)
5、,包在JAVA中的作用:文件夹将文件和应用程序组织为组,包将类组织为组 包减少了命名冲突带来的问题,如果所有类放在同一个包中就容易产生命名冲突 引入包以后,声明类前必须声明类所在的包,格式:package 包1名.包2名包n名;例如:package java.awt;或:package javax.swing.event;如果一个类访问另一个包中的类,必须通过包来引用,有两种引用方法 1)声明该类前,使用import语句 例如:import java.awt.Button;/Button为被访问的类,位于包java.awt中 import java.awt.*;/引入包java.awt中的全部
6、类 2)访问另一个包中的类时,使用包名 例如:java.awt.Button b=new java.awt.Button();,重庆工商大学计信学院*,8,4.3 包(2),/example one/类在同一个包中 public class Date2 int year,month,day;void setDate(int y,int m,int d)year=y;month=m;day=d;void print()System.out.println(year+month+day);class UseDate2 public static void main(String args)Date
7、2 b=new Date2();b.setDate(2004,9,1);b.print();,/类在不同包中/Date2.javapackage p1.p2;public class Date2 int year,month,day;public void setDate(int y,int m,int d)year=y;month=m;day=d;public void print()System.out.println(year+month+day);/UseDate2.javaimport p1.p2.Date2;class UseDate2 public static void mai
8、n(String args)Date2 b=new Date2();b.setDate(2004,9,1);b.print();,重庆工商大学计信学院*,9,Example one 在DOS窗口下的运行(1),DOS窗口下必须手动建立包一 编译Date2.java1)建立保存p1.p2.Date2的文件夹,例如E:db0312)设置环境变量:右击我的电脑选属性、高级、环境变量,双击系统变量中的CLASSPATH,在变量值中加入保存p1.p2.Date2的文件夹,例如;E:db031(不要忘了环境变量以;隔开)3)E:db031下建立p1和p2文件夹,将Date2.java保存E:db031p1
9、p2下4)打开DOS窗口,进入Date2所在目录,即E:db031p1p2。打开DOS窗口的方法:显示器左下角,点击开始、程序、附件、命令提示符;进入E:db031p1p2 的方法:切换 C:E:即输入E:然后回车(如文件保存在C 盘,不须切换);进入 E cd db031p1p25)编译,E:db031p1p2javac Date2.java 并回车,重庆工商大学计信学院*,10,Example one 在DOS窗口下的运行(2),二 编译并运行UseDate2.java1)建立保存UseDate2的文件夹,例如:C:db0322)保存UseDate2.java,编译 javac UseDa
10、te2.java 3)3)运行 C:db032下,重庆工商大学计信学院*,11,example(1)在Jcreator下的运行,Jcreator下,系统按源文件中的package语句自动建立包1)建立保存p1.p2.Date2的空project,例如E:db031,保存Date2.java并编译,可看到p1和p2已经自动生成2)编译UseDate2.java3)建立保存UseDate2.java的空project,保存UseDate2.java,此时编译会报错4)设置环境变量 在Jcreator主菜单的project下选择project settings 选择required librarie
11、s后按 new 选择classes后按 add 选add path,找到p1.p2.Date2所在文件夹(E:db031)在Name中给该路径命名,按OK 此时可看到该路径名出现在文本框中,选中该路径名,可看到该路径已加入到ClassPath中5)编译UseDate2.java并运行,重庆工商大学计信学院*,12,环境变量classpath的配置,Classpath的作用 当一个类访问位于其它包中的其它类时,Classpath帮助该类找到其它类,Classpath的值:Classpath就是包含被访问的类所在的包的文件夹 被访问的类所在的包由被访问的类的package语句声明,并且必须建立同名
12、的文件夹 这样,被访问的类的路径包括两部分:Classpath的值和包 两个必须的Classpath值.(实心句号)表示当前文件夹(J2sdk)的安装目录 lib 表示JAVA类库所在文件夹,重庆工商大学计信学院*,13,J2sdk和Jcreator的安装,J2sdk和Jcreator LE都是自由软件,可免费下载 还可下载Documation及其它资料 卸载J2sdk和Jcreator LE,方法:我的电脑、添加删除程序 选中Jcreator LE并删除,选中Java2 runtime environment 和J2sdk删除 从ftp:/10.10.2.119下载Jcreator 和J2s
13、dk安装软件安装J2sdk,安装时可以设置安装路径,如设为:C:j2sdk根据安装路径设置环境变量path:右击我的电脑选属性、高级、环境变量,双击系统变量中的path,增加;(J2sdk安装路径)bin 例如;C:j2sdkbin path设置后,打开DOS窗口,键入java命令并回车,可检验设置是否正确设置环境变量classpath:右击我的电脑选属性、高级、环境变量,双击系统变量中的classpath 增加.;(J2sdk安装路径)lib 例如:.;C:j2sdklib 安装Jcreator LE,重庆工商大学计信学院*,14,J2sdk安装时环境变量的设置,设置path设置classp
14、ath,重庆工商大学计信学院*,15,4.4 JAVA的API(1),JAVA的类库称为应用程序编程接口(API,Application Programming Interface)JAVA类按包来组织,常用包有:java.lang java.util java.awt javax.swing java.text java.io java.applet 使用JAVA类库中的类,必须用(J2sdk安装目录)lib,例如E:j2sdklib 来设置环境变量classpath使用JAVA类库中的类必须使用import语句导入该类,格式:import 包名1.包名2*;或 import 包名1.包名2
15、类名;使用java.lang中的类不需用import语句导入该类,重庆工商大学计信学院*,16,4.4 JAVA的API(2),JAVA类库中的常用类java.lang.Math类 该类的变量E和PI以及方法都是static的,可以通过类名直接引用/an exampleclass MathExample public static void main(String args)double d1=Math.E;double d2=Math.PI;System.out.println(d1);System.out.println(d2);System.out.println(Math.sqrt(d
16、1);System.out.println(Math.sin(d2/2);,重庆工商大学计信学院*,17,4.4 JAVA的API(3),、Short、Integer、Long、Float、Double、Character、Boolean类 这8个类对应8种基本数据类型;这8个类都有构造方法,可以通过对应的数据类型或字符串作为参数,生成对象 这8个类都有实例方法返回对应的数据类型和字符串 这8个类都有类方法返回对应的数据类型和字符串/an exampleclass DateWraper1 public static void main(String args)Byte b=new Byte(b
17、yte)10);/Byte b=new Byte(10);/调用实例方法 byte bb=b.byteValue();String ss=b.toString();System.out.println(bb+ss);/调用类方法 byte b1=Byte.parseByte(123);System.out.println(b1);String s1=Byte.toString(byte)111);System.out.println(s1);,重庆工商大学计信学院*,18,4.4 JAVA的API(4),java.lang.Object、Class类 java.lang.Object是所有类的
18、超类,其它类可继承Object类的成员方法 class UseObject public static void main(String args)Boolean b=new Boolean(true);Class c=b.getClass();System.out.println(c.getName();,重庆工商大学计信学院*,19,4.4 JAVA的API(5),java.lang.System类:该类的静态两个成员变量out和in对应标准输出和输入流 java.util.Date、Calendar类和java.text.SimpleDateFormat类import java.util
19、.*;import java.text.SimpleDateFormat;class UseUtil public static void main(String args)Date d=new Date();boolean b=d.before(new Date(2003,12,4,21,33,55);System.out.println(b);System.out.println(d.getYear();System.out.println(d.getMonth();System.out.println(d.getDay();SimpleDateFormat sdf=new SimpleDateFormat(yyyyMMddhhmmss);System.out.println(sdf.format(d);System.out.println(Calendar.DATE);System.out.println(Calendar.DAY_OF_MONTH);System.out.println(Calendar.DAY_OF_WEEK);,重庆工商大学计信学院*,20,下课!,