收藏 分销(赏)

java 资料文档.ppt

上传人:pc****0 文档编号:13369376 上传时间:2026-03-09 格式:PPT 页数:35 大小:144KB 下载积分:10 金币
下载 相关 举报
java 资料文档.ppt_第1页
第1页 / 共35页
java 资料文档.ppt_第2页
第2页 / 共35页


点击查看更多>>
资源描述
单击此处编辑母版标题样,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第九课,面向对象程序设计2,1,本课内容,package/import,语句,类的继承,访问控制,方法的重写,多态性及其应用,2,package,语句,为便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,,Java,引入包(,package),机制,提供类的多重类命名空间。,java,io,lang,System,String,Object,3,package,语句,package,语句作为,Java,源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。它的格式为:,package pkg1.pkg2.pkg3;,举例:,Test.java,package p1;,public class Test,public void display(),System.out.println(in,method display();,Java,编译器把包对应于文件系统的目录管理,,package,语句中,用,.,来指明包(目录)的层次;,4,编译和生成包,如果在程序,Test.java,中已定义了包,p1,编译时采用如下方式:,javac,Test.java,则编译器会在当前目录下生成,Test.class,文件,再在适合位置,(,destpath,目录),手动创建一个名为,p1,的子目录,将,Test.class,复制,到该,p1,目录下,。,javac,-d,destpath,Test.java,则编译器会自动在,destpath,目录下建立一个子目录,p1,并将生成的,.,class,文件都放到,destpath/p1,下。,5,import,语句,为使用定义在不同包中的,Java,类,需用,import,语句来引入所需要的类。,语法格式:,import package1.package2.(,classname,|*);,应用举例:,import p1.Test;/import p1.*;,public class,TestPackage,public static void main(String,args,),Test t=new Test();/Test,类在,p1,包中定义,t.display();,6,import,语句分析,对于,import,java.awt,.*;,将按照路径:,CLASSPATH java,awt,来查找所需的外部类。,环境变量,CLASSPATH,是用来指示,Java,程序所引用的外部类所在的一系列相对路径,7,Ex1,在,第二课练习,Ex2-1,的类定义文件,A.java,中增加包声名语句,指定其所在包为,mypack,,,并对应用程序文件,Test.java,做相应修改(添加,import,语句),实现同样的功能。,提示:,Test.java,A.java,Test.class,保存在当前目录(如“,c:myexex02,”);,而,A.class,保存在当前目录下的与声明的包名同名的子目录中(如“,c:myexex02mypack,”),8,JDK,中主要的包介绍,java.lang,-,包含一些,Java,语言的核心类,如,String、Math、Integer、System,和,Thread,,提供常用功能。,java.awt,-,包含了构成抽象窗口工具集(,abstract window toolkits),的多个类,,,这些类被用来构建和管理应用程序的图形用户界面(,GUI)。,java.applet-,包含,applet,运行所需的一些类。,-,包含执行与网络相关的操作的类。,java.io,-,包含能提供多种输入/输出功能的类。,java.util,-,包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。,9,类的继承(1),为描述和处理个人信息,定义类,Person:,public class Person,public String name;,public,int,age;,public Date,birthDate,;,public String,getInfo,().,Person,+,name:String,+age:,int,+,birthDate,:Date,+,getInfo,():String,10,类的继承(2),为描述和处理学生信息,定义类,Student:,public class Student,public String name;,public,int,age;,public Date,birthDate,;,public String school;,public String,getInfo,().,Student,+,name:String,+age:,int,+,birthDate,:Date,+school:String,+,getInfo,():String,11,类的继承(3),通过继承,简化,Student,类的定义:,public class Person,public String name;,public,int,age;,public Date,birthDate,;,public String,getInfo,().,public class Student,extends,Person,public String school;,Person,+,name:String,+age:,int,+,birthDate,:Date,+,getInfo,():String,Student,+,school:String,12,类的继承(4),类继承语法规则:,class extends ,*,Object,类是所有,Java,类的最高层父类,Java,只支持单继承,不允许多重继承,一个子类只能有一个父类,一个父类可以派生出多个子类,13,单继承举例,Person,+,name:String,+age:,int,+,birthDate,:Date,+,getInfo,():String,Student,+,school:String,+,setschool:void,+,getschool:String,Soldier,Officer,Graduate,+,major:history,+,register():void,14,Ex2,按照,P14,页的类结构及继承关系,定义实现,Java,类,Person、Student、Graduate。,所有的类、属性及方法均定义为,public,的。,编写,Java,程序、创建,Graduate,类型对象并测试-访问其所有继承来的方法和属性。,将父类,Person、Student,中的部分属性/方法改为,private,的,然后重复2中的测试。,15,访问控制,Modifer,Same Class,Same Package,Subclass,Universe,private,Yes,default,Yes,Yes,protected,Yes,Yes,Yes,public,Yes,Yes,Yes,Yes,可以对,Java,类中定义的属性和方法进行访问控制-规定不同的保护等级:,16,访问控制举例,范例:,AccessControlTest1.java,17,访问控制分析,f1_private,f2_default,c2_public,f3_protected,f4_public,c1_private,内存空间中子类对象携带的数据,子类的对象可以调用的方法,fm2()_default,fm3()_ protected,fm4()_ public,cm2()_public,cm1()_private,父类,Parent,和子类,Child,在同一包中定义时:,18,Ex3,改造上述应用程序后,分析其结果,体会,Java,访问控制机制,可分下述几种情形:,应用程序入口,main(),方法定义在一个非子类中,Parent,和,Child,类位于不同包中,Parent,和,Child,类位于不同包中,,main(),方法定义在不同包内的非子类中,19,方法的重写,在子类中可以根据需要对从父类中继承来的方法进行改造-方法的重写,重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型,重写方法不能使用比被重写方法更严格的访问权限,20,方法重写举例(1),public class Person,protected String name;,protected,int,age;,protected Date,birthDate,;,/,java.util,包中定义过类,Date,public String,getInfo,(),return Name:+name+n+age:+age;,public class Student extends Person,protected String school;,public String,getInfo,(),return Name:+name+,nage,:+age,+,nschool,:+school,;,21,方法重写举例(2),public class Parent,public,void method1(),public class Child extends Parent,private,void method1(),/illegal,public class,UseBoth,public void,doOtherThing,(),Parent p1=new Parent();,Child p2=new Child();,p1.method1();,p2.method1();,22,Ex4,编写应用程序测试,P21,页类,Parent,和,Child,中定义的重写方法,创建两个类的对象并分别调用方法,getInfo,(),;,在子类中添加同名属性,protected String name;,重复1)的测试,分析其结果。,23,关键字,super,在,Java,类中使用,super,来引用父类的成分,super,可用于访问父类中定义的属性,super,可用于调用父类中定义的成员方法,super,可用于在子类构造方法中调用父类的构造方法,super,的追溯不仅于直接父类,24,关键字,super,举例,public class Person,private String name;,private,int,age;,private Date,birthDate,;,public String,getInfo,(),return Name:+name+,nage,:+age;,public class Student extends Person,private String school=New Oriental;,public String,getSchool,()return school;,public String,getInfo,(),/,调用父类的方法,return,super.,getInfo,()+,nschool,:+school;,25,Ex5,运行并分析,P25,页中例程,使用关键字,super,实现在子类中访问父类中定义的同名属性,改造,EX4-2),中的程序。,26,多态性(1),多态-在,Java,中,子类的对象可以替代父类的对象使用,一个对象只能有一种确定的数据类型,一个引用类型变量可能指向,(,引用,),多种不同类型的对象,Person p=new Student();,Object o=new Person();,o=new Student();,27,多态性(2),一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法,Student m=new Student();,m.school=,pku,;,/,合法,Person e=new Student();,e.school=,pku,;,/,非法,28,虚方法调用,(,Virtual Method Invocation),正常的方法调用,Person e=new Person();,e.getInfo,();,Student e=new Student();,e.getInfo,();,虚拟方法调用,(,多态情况下),Person e=new Student();,e.getInfo,();,编译时类型和运行时类型,29,Ex6,编程演示/测试,Java,虚方法调用机制,30,多态性应用举例(1),同类收集(,homogenous,collections),MyDate,m=new MyDate2;,m0=new MyDate(22,12,1964);,m1=new MyDate(22,7,1964);,异类收集,(,heterogeneous,collections),Person p=new Person3;,p0=new Student();,p1=new Person();,p2=new Graduate();,31,多态性应用举例(2),方法声明的参数类型为父类类型,可以使用子类的对象作为实参调用该方法,public class Test,public void method(Person e),/,e.getInfo,();,public static void main(String,args,),Test t=new Test();,Student m=new Student();,t.method(m);,32,instanceof,操作符,public class Person extends Object,public class Student extends Person,public class Graduate extends Person,-,public void method1(Person e),if(e,instanceof,Student),/,处理,Student,类型及其子类类型对象,else if(e,instanceof,Graduate),/,处理,Graduate,类型及其子类类型对象,else,/,处理,Person,类型对象,33,对象造型,(,Casting),对,Java,对象的强制类型转换称为造型,在造型前可以使用,instanceof,操作符测试一个对象的类型,从子类到父类的类型转换可以自动进行,从父类到子类的类型转换必须通过造型,(,强制类型转换,),实现,无继承关系的引用类型间的转换是非法的,34,对象造型举例,/,Person,及,Student,类可参考第21页自行定义,public class Test,public void method(Person e),System.out.println(e.getschool,();,/,非法,if(e,intstanceof,Student),Student me=(Student)e;,System.out.println(me.getschool,();,public static void,main(Stirng,args,),Test t=new Test();,Student m=new Student();,t.method(m);,35,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服