Java面向对象程序设计第8讲.ppt

上传人:wuy****n92 文档编号:70795068 上传时间:2023-01-28 格式:PPT 页数:41 大小:338.99KB
返回 下载 相关 举报
Java面向对象程序设计第8讲.ppt_第1页
第1页 / 共41页
Java面向对象程序设计第8讲.ppt_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《Java面向对象程序设计第8讲.ppt》由会员分享,可在线阅读,更多相关《Java面向对象程序设计第8讲.ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第5章 面向对象程序设计5.2 5.2 类的继承类的继承(inheritance)inheritance)v类类继继承承也也称称类类派派生生,是是指指一一个个类类可可以以继继承承其其他他类类的的非非私私有有成成员员,实实现现代代码码复复用用。被被继继承承的的类类称称为为父父类类或或超超类类,父父类类包包括括所所有有直直接接或或间间接接被被继继承承的的类类;继继承承父父类类或或超超类类后后产产生生的的类类称称为为派派生生类或子类。类或子类。v以以ObjectObject类类作作为为所所有有类类的的父父类类,所所有有的的类类都都是是直接或间接地继承直接或间接地继承ObjectObject类得到的。

2、类得到的。v在在JavaJava,只只允允许许单单继继承承。所所谓谓单单继继承承是是指指每每个个类类只只有有一一个个父父类类,不不允允许许有有多多个个父父类类。一一个个类类允允许许同同时时拥拥有有多多个个子子类类,这这时时这这个个父父类类实实际际上上是是所所有有子子类类的的公公共共成成员员变变量量和和公公共共方方法法成成员员的的集集合合,而而每每一一个个子子类类则则是是父父类类的的特特殊殊化化,是是对对公公共共成成员员变变量量和和方方法法成成员员的的功功能能、内内涵涵方方面面的的扩展和延伸。扩展和延伸。JavaJava的的多继承可通过接口来实现。多继承可通过接口来实现。v类类继继承承不不改改变

3、变成成员员的的访访问问权权限限,父父类类中中的的成成员员为为公公有有的的或或被被保保护护的的,则则其其子子类类的的成成员员访访问问权权限也继承为公有的或被保护的。限也继承为公有的或被保护的。v5.2.1 5.2.1 类继承的实现类继承的实现v继继承承是是通通过过extendsextends关关键键字字来来实实现现的的,在在定定义义新新类类时时使使用用extendsextends关键字指明新类的父类,就在两个类之间建立了继承关系。关键字指明新类的父类,就在两个类之间建立了继承关系。v1.1.定义子类定义子类v前面前面其类头分别为:其类头分别为:public public class class

4、HelloApplet HelloApplet extends extends Applet.Applet.class class MyException MyException extends extends Exception Exception.v一一般般地地,在在类类声声明明中中,加加入入extendsextends子子句句来来创创建建一一个个类类的的子子类类。extendsextends后后即即为为父父类类名名,若若父父类类名名又又是是某某个个类类的的子子类类,则则定定义义的的类类也也是是该该类类的的(间间接接)子子类类。若若无无extendsextends子句,则该类为的子类。子句

5、,则该类为的子类。v2.2.类继承的传递性类继承的传递性v类类继继承承具具有有传传递递性性,即即子子类类继继承承父父类类的的所所有有非非私私有有成成员员,也也继继承承父父类类的的父父类类直直至至祖祖先先所所有有的的所所有有非私有成员。非私有成员。v3.3.类的成员覆盖类的成员覆盖v在在类类的的继继承承中中,若若子子类类(派派生生类类)新新增增的的成成员员名名称称与与父父类类(超超类类)成成员员相相同同,则称为成员覆盖(则称为成员覆盖(overridingoverriding)。)。v在在子子类类中中定定义义与与父父类类同同名名成成员员的的目目的的是是修改父类的属性和行为修改父类的属性和行为。v

6、(1)(1)成员变量的覆盖成员变量的覆盖v若若子子类类声声明明了了与与父父类类同同名名的的变变量量,则则父父类类的的变变量量被被隐隐藏藏起起来来,直直接接使使用用的的是是子子类类的的变变量量,但但父父类类的的变变量量仍仍占占据据空空间间,可通过可通过supersuper或父类名来访问。或父类名来访问。v【例例5.145.14】在在子子类类中中定定义义了了与与父父类类同同名名的的变变量量,从从而而隐隐藏藏了了父父类类成成员员变变量量,这这种种隐隐藏藏变变量量可可加加supersuper前前缀来访问。缀来访问。class A class A int x=100;int x=100;class B

7、extends Aclass B extends A int x=200;int x=200;void print()void print()System.out.println(Subclass:+x);System.out.println(Subclass:+x);System.out.println(Superclass System.out.println(Superclass:+super.x);+super.x);public static void main(String args)public static void main(String args)(new B().prin

8、t();(new B().print();v程序运行结果如下:程序运行结果如下:Subclass:200Subclass:200Superclass:100Superclass:100v(2)(2)成员方法覆盖成员方法覆盖v方方法法成成员员的的覆覆盖盖与与成成员员变变量量的的隐隐藏藏的的不不同同之之处处在在于于:子子类类隐隐藏藏父父类类的的成成员员变变量量只只是是使使得得它它不不可可见见,父父类类的的同同名名成成员员变变量量在在子子类类对对象象中中仍仍然然占占据据自自己己的的存存储储空空间间;v而而子子类类成成员员方方法法对对父父类类同同名名方方法法的的覆覆盖盖将将清清除除父父类类方方法法占占

9、用用的的内内存存空空间间,从从而而使得父类的方法在子类对象中不复存在。使得父类的方法在子类对象中不复存在。v方方法法的的覆覆盖盖中中需需注注意意的的是是:子子类类在在重重新新定定义义父父类类已已有有的的方方法法时时,应应保保持持与与父父类类完完全全相相同同的的方方法法头头声声明明,即即应应与与父父类类有有完完全全相相同同的的方方法法名名、返返回回值值和和参参数数列列表表。否否则则就就不不是是方方法法的的覆覆盖盖。而而是是在在子子类类定定义义自自己己的的与与父父类类无无关关的的成成员员方方法法,父类的方法未被覆盖,所以仍然存在。父类的方法未被覆盖,所以仍然存在。v下述规则适用于覆盖方法:下述规则

10、适用于覆盖方法:覆覆盖盖方方法法的的返返回回类类型型必必须须与与它它所所覆覆盖盖的的方方法相同。法相同。覆盖方法不能比它所覆盖的方法访问性差。覆盖方法不能比它所覆盖的方法访问性差。覆覆盖盖方方法法不不能能比比它它所所覆覆盖盖的的方方法法抛抛出出更更多多的异常。的异常。v4.4.派生类的初始化派生类的初始化v在在创创建建派派生生类类的的对对象象时时,使使用用派派生生类类的的构构造造方方法法对对其其初初始始化化,不不但但要要对对自自身身的的成成员员变变量量赋赋初初值值,还还要要对对父父类类的的的的成成员员变变量量赋赋初初值值。因因为为成成员员变变量量赋赋初初值值通通常常在在构构造造方方法法中中完完

11、成成,因因此此在在JavaJava语语言言中中,允允许许派派生生类类继继承承父类的构造方法。父类的构造方法。构造方法的继承遵循如下的原则:构造方法的继承遵循如下的原则:(1)(1)若若父父类类是是无无参参数数的的构构造造方方法法,则则子子类类无无条件的继承该构造方法。条件的继承该构造方法。(2)(2)若若子子类类无无自自己己的的构构造造方方法法,则则它它将将继继承承父父类类的的无无参参构构造造方方法法作作为为自自己己的的构构造造方方法法;若若子子类类有有自自己己的的构构造造方方法法,则则在在创创建建子子类类对对象象时时,它它将将先先执执行行继继承承自自父父类类的的无无参参构构造造方方法,然后再

12、执行自己的构造方法。法,然后再执行自己的构造方法。(3)3)若若父父类类是是有有参参数数的的构构造造方方法法,子子类类可可以以通通过过在在自自己己的的构构造造方方法法中中使使用用supersuper关关键键字字来来调调用用它它,但但这这个个调调用用语语句句必必须须是是子子类类构构造造方方法法的第一个可执行语句。的第一个可执行语句。v【例例5.155.15】继继承承例例5.65.6中中的的类类RectConstructorRectConstructor时时对对父父类类的的成成员员变变量量赋赋初值。初值。class Cube extends RectConstructor class Cube e

13、xtends RectConstructor double height;double height;Cube(double l,double w,double h)Cube(double l,double w,double h)super(l,w);super(l,w);height=h;height=h;void vol()void vol()System.out.println(System.out.println(长长方方体体体体积积 =+area()area()*height);height);public class CubeDemo public class CubeDemo p

14、ublic static void main(String args)public static void main(String args)Cube c=new Cube(7,6,5);Cube c=new Cube(7,6,5);c.vol();c.vol();v程序运行结果如下:程序运行结果如下:长方体体积长方体体积=210.0=210.0v5.2.2 5.2.2 抽象类和抽象方法抽象类和抽象方法vabstractabstract修修饰饰的的抽抽象象类类需需要要子子类类继继承承,在在派派生生类类中中实实现现抽抽象象类类中中的的抽抽象象方方法法。抽抽象象类类被被派派生生、抽抽象象方方法法被

15、被子子类类实实现现后后,才才有有实实际际意意义义。抽抽象象方方法法是是只只有有返返回回值值类类型型、方方法法名名、方方法法参参数数而而不不定定义义方方法法体体的的一一种种方方法法。抽抽象象方方法法的的方方法法体体在在子子类类中中才才编编写写实实现现。注注意意不不能能用用abstractabstract修修饰饰构构造造方方法法、静静态态方方法法和和私私有有(private)(private)方法,也不能覆盖父类中的抽象方法。方法,也不能覆盖父类中的抽象方法。v抽抽象象方方法法必必须须定定义义在在抽抽象象类类中中。抽抽象象类类是是一一种种未未实实现的类,抽象类不能用现的类,抽象类不能用newnew

16、实例化一个对象。实例化一个对象。v【例例5.165.16】计计算算底底面面半半径径为为2 2高高为为3 3的的圆圆柱柱体体体体积积和和长、宽、高分别为长、宽、高分别为3 3、2 2、4 4的长方形体积。的长方形体积。abstract class Shape /abstract class Shape /定义抽象类定义抽象类ShapeShape double radius,length,width,height;double radius,length,width,height;abstract double vol();/abstract double vol();/抽象方法抽象方法volvo

17、l Shape(double r,double h)/Shape(double r,double h)/定义构造方法定义构造方法 radius=r;radius=r;height=h;height=h;Shape(double l,double w,double h)Shape(double l,double w,double h)length=l;length=l;width=w;width=w;height=h;height=h;class Circle extends Shapeclass Circle extends Shape Circle(double r,double h)Cir

18、cle(double r,double h)super(r,h);super(r,h);double vol()/double vol()/在抽象类的子类中实现抽象方法在抽象类的子类中实现抽象方法 return(3.1416*radius*radius*height);return(3.1416*radius*radius*height);class Rectangle extends Shape class Rectangle extends Shape Rectangle(double l,double w,double h)Rectangle(double l,double w,doub

19、le h)super(l,w,h);super(l,w,h);double vol()double vol()return(length*width*height);return(length*width*height);class AbstractClassDemo class AbstractClassDemo public static void main(String args)public static void main(String args)Circle c=new Circle(2,3);Circle c=new Circle(2,3);Rectangle r=new Rec

20、tangle(3,2,4);Rectangle r=new Rectangle(3,2,4);System.out.println(System.out.println(圆柱体体积圆柱体体积=+=+c.vol();c.vol();System.out.println(System.out.println(长方体体积长方体体积=+=+r.vol();r.vol();v程序的运行结果如下:程序的运行结果如下:圆柱体体积圆柱体体积=37.6992=37.6992长方体体积长方体体积=24.0=24.0v5.2.3 5.2.3 类对象之间的类型转换类对象之间的类型转换v父类对象和子类对象的转换需要注意

21、以下原则:父类对象和子类对象的转换需要注意以下原则:v(1)(1)子子类类对对象象可可以以被被视视为为是是其其父父类类的的一一个个对对象象,反反之之则不可。则不可。v(2)(2)若若一一个个方方法法的的形形式式参参数数定定义义的的是是父父类类的的对对象象,则则调用该方法的实际参数可以使用子类对象。调用该方法的实际参数可以使用子类对象。v(3)(3)若若父父类类对对象象引引用用指指向向的的实实际际是是一一个个子子类类对对象象(在在以以前前的的某某个个时时候候根根据据(1 1)将将子子类类对对象象的的引引用用赋赋值值给给这这个个父父类类对对象象的的引引用用),则则这这个个父父类类对对象象的的引引用

22、用可可以用强制类型转换转化成子类对象的引用。以用强制类型转换转化成子类对象的引用。5.3 5.3 接口(接口(interfaceinterface)v接接口口是是若若干干完完成成某某一一特特定定功功能能的的没没有有方方法法体体的的方方法法(抽抽象象方方法法)和和常常量量的的集集合合。接接口口仅仅提提供供了了方方法法协协议议的的封封装装。为为了了获获取取接接口口功功能能和和真真正正实实现现接接口口功功能能需需要要使使用用类类来来继继承承该该接接口口。在在继继承承接接口口的的类类中中,通通过过定定义义接接口口中中抽抽象象方方法法的的方方法法体体(即即抽抽象象方方法法的的覆覆盖盖)来来实实现现接接口

23、口功能。功能。vJavaJava语语言言使使用用接接口口来来实实现现类类间间多多重重继继承承的的功功能能,从从而而弥弥补补了了JavaJava语语言言只只支支持持类类间间单单重重继继承承,描述复杂实际问题处理不方便的不足。描述复杂实际问题处理不方便的不足。v5.3.1 5.3.1 接口的定义和实现接口的定义和实现v1.1.接口的定义接口的定义v在在JavaJava语语言言中中,用用关关键键字字interfaceinterface来来定定义义接口接口。接口有类似类的结构,。接口有类似类的结构,其定义格式如下:其定义格式如下:修修饰饰符符 interface interface 接接口口名名 ex

24、tends extends 父接口名表父接口名表/接口体接口体 v接接口口定定义义包包括括定定义义接接口口名名和和接接口口体体。接接口口体体为为变变量量和和抽抽象象方方法法的的集集合合,但但没没有有构构造造方方法法和和静静态态初初始始化化代代码码。接接口口体体中中定定义义的的变变量量均均为为终终极极(finalfinal)的的、静静态态(staticstatic)的的和和公公共共(publicpublic)的的。接接口口体体中中定定义义的的方方法法均均为为抽抽象象的的和和公公共共的的。由由于于接接口口所所有有成成员员均均具具有有这这些些特特性性,相相关关的修饰符可以省略。的修饰符可以省略。v2

25、.2.接口的实现接口的实现v在在某某个个继继承承接接口口的的派派生生类类中中为为接接口口中中的的抽抽象象方方法法书书写写语语句句并并定定义义实实在在的的方方法法体体称称为为实实现现这这个个接接 口口。派派 生生 类类 实实 现现 哪哪 个个 或或 哪哪 些些 接接 口口 用用implementsimplements说明,不能用说明,不能用extendsextends说明。说明。v派派生生类类在在实实现现接接口口时时,还还要要注注意意:若若实实现现接接口口的的类类不不是是抽抽象象类类,则则在在该该类类的的定定义义部部分分必必须须实实现现指指定定接接口口的的所所有有抽抽象象方方法法。方方法法体体可

26、可以以由由javajava语语言言书书写写,也也可可以以由由其其他他语语言言书书写写。因因为为是是覆覆盖盖方方式式,所所以以方方法法头头部部分分应应该该与与接接口口中中的的定定义义完完全全一一致致,即即有有完完全全相相同同的的参参数数表和返回值。表和返回值。v【例【例5.175.17】接口的实现。】接口的实现。interface Irect interface Irect double w=3,l=4;double w=3,l=4;void compute();void compute();class Crect implements Irectclass Crect implements I

27、rect public void compute()public void compute()System.out.println(System.out.println(边边长长分分别别为为3 3和和4 4的的长长方方形形面面积积为为:+w*l);w*l);public class InterfaceDemo public class InterfaceDemo public static void main(String args)public static void main(String args)Crect r=new Crect();Crect r=new Crect();pute(

28、);pute();v程序运行结果如下:程序运行结果如下:边长分别为边长分别为3 3和和4 4的长方形面积为:的长方形面积为:12.012.0v5.3.2 5.3.2 接口的继承和组合接口的继承和组合v接接口口也也可可以以通通过过关关键键字字extendsextends继继承承其其他他接接口口。子子接接口口将将继继承承父父接接口口中中所所有有的的常常量量和和抽抽象象方方法法。此此时时,子子接接口口的的非非抽抽象象派派生生类类不不仅仅需需实实现现子子接接口口的的抽抽象象方方法法,而而且且需需实实现现继继承承来来的的抽抽象象方方法法。不不允允许许存存在在未未被实现的接口方法。被实现的接口方法。v【例

29、【例5.185.18】接口的继承。】接口的继承。interface Ainterface A String a=String a=在接口在接口A A中中;void showA();void showA();interface B extends Ainterface B extends A String b=String b=在接口在接口B B中中;void showB();void showB();interface C extends B interface C extends B String c=String c=在接口在接口C C中中;void showC();void showC(

30、);class InterfaceABC implements C class InterfaceABC implements C public void showA()public void showA()System.out.println(a);System.out.println(a);public void showB()public void showB()System.out.println(b);System.out.println(b);public void showC()public void showC()System.out.println(c);System.out

31、.println(c);public class UseInterface2 public class UseInterface2 public static void main(String args)public static void main(String args)InterfaceABC i=new InterfaceABC();InterfaceABC i=new InterfaceABC();i.showA();i.showB();i.showC();i.showA();i.showB();i.showC();v程序运行结果如下:程序运行结果如下:在接口在接口A A中中在接口在

32、接口B B中中在接口在接口C C中中v5.3.3 5.3.3 接口的多态接口的多态v接接口口的的使使用用使使得得方方法法的的描描述述说说明明和和方方法法功功能能的的实实现现分分开开考考虑虑,这这有有助助于于降降低低程程序序的的复复杂杂性性,使使程程序序设设计计灵灵活活,便便于于扩扩充充修修改改。这这也也是是JavaJava面面向向对对象象程程序序设计方法中多态特性的体现。设计方法中多态特性的体现。v【例【例5.195.19】定义接口并实现接口,说明接口的多态。】定义接口并实现接口,说明接口的多态。interface OneToNinterface OneToN int disp(int n);

33、int disp(int n);class Sum implements OneToN class Sum implements OneToN public int disp(int n)public int disp(int n)int s=0,i;int s=0,i;for(i=1;i=n;i+)s+=i;for(i=1;i=n;i+)s+=i;return s;return s;class Pro implements OneToN /class Pro implements OneToN /继承接口继承接口 public public int int disp(int disp(int

34、 n)n)/实实现现接接口口中中的的dispdisp方法方法 int m=1,i;int m=1,i;for(i=1;i=n;i+)m*=i;for(i=1;i=n;i+)m*=i;return m;return m;public class UseInterfacepublic class UseInterface public static void main(String args)public static void main(String args)int n=10;int n=10;Sum s=new Sum();Sum s=new Sum();Pro p=new Pro();Pr

35、o p=new Pro();System.out.println(1System.out.println(1至至 n n的的 和和 =+s.disp(n);s.disp(n);System.out.println(1System.out.println(1至至 n n的的 积积 =+p.disp(n);p.disp(n);v程序的运行结果如下:程序的运行结果如下:1 1至至n n的和的和=55=551 1至至n n的积的积=3628800=3628800v5.3.4 5.3.4 接口类型的使用接口类型的使用v接接口口可可以以作作为为一一种种引引用用类类型型来来使使用用。任任何何实实现现接接口口

36、的的类类的的实实例例都都可可以以存存储储在在该该接接口口类类型型的的变变量量中中。通通过过这这些些变变量量可可以以访访问问类类所所实实现现的的接接口口中中的的方方法法。JavaJava运运行行时时系系统统动动态态地地确确定定应应该该使使用用哪哪个个类类中中的的方方法。法。v【例【例5.205.20】接口类型的使用(结果同例】接口类型的使用(结果同例5.125.12)。public class UseInterface1 public class UseInterface1 public static void main(String args)public static void main(S

37、tring args)int n=10;int n=10;OneToN otn;OneToN otn;Sum s=new Sum();Sum s=new Sum();otn=s;otn=s;System.out.println(1System.out.println(1至至 n n的的 和和 =+otn.disp(n);otn.disp(n);Pro p=new Pro();Pro p=new Pro();otn=p;otn=p;System.out.println(1System.out.println(1至至 n n的的 积积 =+otn.disp(n);otn.disp(n);5.4 5

38、.4 包(包(packagepackage)v一一组组相相关关的的类类和和接接口口集集合合称称为为包包。包包体体现现了了JavaJava语语言言面面向向对对象象特特性性中中的的封封装装机机制制,包包将将javajava语语言言的的类类和和接接口口有有机机地地组组织织成成层层次次结结构构,这这个个层层次次结结构构与与具具体体的的文文件件系系统统的的目目录录树树结结构构层层次次一一致致。因因此此,JavaJava包包就就是是具具有有一一定定相相关关性性在在文文件系统中可准确定位的件系统中可准确定位的JavaJava文件的集合。文件的集合。v5.4.1 5.4.1 创建包创建包v包由包语句包由包语句

39、packagepackage创建,其语法格式如下:创建,其语法格式如下:package package 包名包名1.1.包名包名2.2.v关关键键字字packagepackage后后是是不不同同层层次次的的包包名名,在在包包名名1 1下下允允许许有有次次一一级级的的子子包包包包名名2 2,包包名名2 2下下可可以以有有更更次次一一级级的的子子包包包包名名3 3等等等等。各各级级包包名名之之间间用用“.”“.”号号分分隔隔。通常情况下,包名称的元素被整个地小写。通常情况下,包名称的元素被整个地小写。v在在JavaJava程程序序中中,packagepackage语语句句必必须须是是程程序序的的第

40、第一一条条非非空空格格、非非注注释释语语句句。通通过过packagepackage语语句句,可可将将JavaJava程程序序分分层层次次地地存存放放在在不不同同的的目目录录下下,目目录录名名称称与与包包的的名称相同。名称相同。v【例例5.215.21】在在例例5.15.1的的类类定定义义前前加加语语句句packagepackage创创建建包包(例例5.15.1的程序代码保持不变的程序代码保持不变)。package ch05;package ch05;v编编译译程程序序完完成成生生成成Rect.classRect.class文文件件后后,可可将将当当前前目目录录的的Rect.classRect.

41、class文文件件复复制制或或移移动动到到创创建建的的ch05ch05子子目目录中。录中。v若若在在编编译译上上述述程程序序时时,带带d d编编译译参参数数来来进进行行编编译译,即即使用编译命令:使用编译命令:javac-d javac-d 目录名目录名 Rect.javaRect.javav来来进进行行编编译译,javajava系系统统自自动动在在命命令令行行中中d d参参数数指指定定的的目目录录(该该目目录录已已经经存存在在)中中创创建建ch05(ch05(与与程程序序中中的的包包名名相相同同)子子目目录录,然然后后自自动动将将生生成成的的类类文文件件Rect.classRect.clas

42、s存放其中。存放其中。v5.4.2 5.4.2 使用包使用包v将将类类组组织织为为包包的的目目的的是是为为了了更更好好地地利利用用包包中中的的类类。一一般般情情况况下下,一一个个类类只只能能引引用用与与它它在在同同一一个个包包中中的的类。类。v在在JavaJava程程序序中中,若若要要用用到到某某些些包包中中的的类类或或接接口口,一一种种方方法法是是在在程程序序的的开开始始部部分分写写出出相相应应的的引引入入(importimport)语语句句,指指出出要要引引入入哪哪些些包包的的哪哪些些类类。另另一一种种方方法法不不用用引引入入语语句句,直直接接在在要要引引入入的的类类和和接接口口前前给给出

43、出其其所所在在包包名名。无无论论采采用用哪哪种种方方法法,使使用用系系统统类类的的前前提提是是这这个个系系统统类应该是用户程序可见的类。类应该是用户程序可见的类。v1.1.使用使用importimport语句语句vimportimport语语句句用用于于灵灵活活地地实实现现在在编编译译单单元元中中使使用用外外部部类类和和接接口口的的引引入入机机制制,引引入入语语句句不不必必考考虑虑类类和和接接口口的引入顺序和是否被多次引入。的引入顺序和是否被多次引入。vimportimport语句的格式如下:语句的格式如下:import import 包名;包名;import import 包名包名.标识符标

44、识符;import import 包名包名.*.*;v2.2.直接使用包直接使用包v这这种种方方法法一一般般用用在在程程序序中中引引用用类类和和接接口口次次数数较较少少的的时候,在要引入的类和接口前直接给出其所在包名。时候,在要引入的类和接口前直接给出其所在包名。例例如如:java.applet.Applet java.applet.Applet ap ap=new new java.applet.Applet();java.applet.Applet();v在在 一一 些些 JavaJava程程 序序 中中,还还 使使 用用 全全 局局 唯唯 一一 包包 名名(Globally Global

45、ly Unique Unique Package Package NameName)的的引引用用形形式式。全全局局是是相相对对于于InternetInternet和和IntranetIntranet而而言言的的。全全局局唯唯一一包包名名通通常常以以一一个个InternetInternet域域名名经经过过将将域域名名前前后后颠颠倒的简单变换来命名。倒的简单变换来命名。例如:例如:com.sun.java.io.*;com.sun.java.io.*;v3.3.使用使用CLASSPATHCLASSPATH环境变量环境变量vCLASSPATHCLASSPATH环环境境变变量量的的作作用用与与DOSD

46、OS的的PATHPATH和和APPENDAPPEND命命令令作作用用类类似似,当当一一个个程程序序找找不不到到它它所所需需要要的的其其他他类类的的.classclass文文件件时时,系系统统会会自自动动到到CLASSPATHCLASSPATH环环境境变变量量所指明的路径中去查找。所指明的路径中去查找。v通通过过SETSET命命令令设设置置CLASSPATHCLASSPATH,可可设设置置程程序序对对类类的的搜搜索索路路径径。若若设设置置错错误误,JavaJava程程序序将将不不能能正正常常执执行行。下面是一个设置下面是一个设置CLASSPATHCLASSPATH的的SETSET命令:命令:SE

47、T CLASSPATH SET CLASSPATH =.;c:jdk1.5lib;c:jdk1.5libclasses.zip.;c:jdk1.5lib;c:jdk1.5libclasses.zipv它它 将将 JavaJava类类 搜搜 索索 路路 径径 设设 置置 为为 当当 前前 目目 录录、c:jdk1.5libc:jdk1.5lib目录和目录和c:jdk1.5libclasses.zipc:jdk1.5libclasses.zip。v对对JavaJava应应用用程程序序,还还可可以以通通过过设设置置JavaJava解解释释器器开开关关参参数数来来指指定定类类文文件件的的搜搜索索路路径

48、径。例例如如,对对于于SunSun公公司司的的 Jave Jave SDKSDK解解 释释 器器 java.exejava.exe,有有 开开 关关 参参 数数-classpathclasspath。v例例如如,若若需需要要解解释释执执行行的的Hello.classHello.class文文件件不不在在当当前前目目录录,而而在在D D盘盘根根目目录录下下jfilejfile目目录录中中,则则可可以以使使用用如下的命令行语句来执行如下的命令行语句来执行SDKSDK解释器:解释器:java Hello-classpath d:jfile java Hello-classpath d:jfilev【

49、例例5.225.22】对对例例5.35.3中中类类RectDemoRectDemo引引用用例例5.215.21中中的的ch05ch05包包中中的的类类RectRect的的使使用用。可可在在例例5.35.3的的类类定定义义前前添添加语句:加语句:package ch05;package ch05;import ch05.*;import ch05.*;v编编译译完完成成产产生生classclass文文件件后后将将其其从从当当前前目目录录复复制制或或移移动动到到ch05ch05子子目目录录下下,可可在在当当前前目目录录下下用用如如下下的的命命令令来执行:来执行:java ch05.RectDemo

50、 java ch05.RectDemov程序运行结果同例程序运行结果同例5.35.3一样。一样。v5.4.3 5.4.3 类及类成员的访问权限类及类成员的访问权限vJavaJava程程序序将将数数据据和和对对数数据据的的处处理理代代码码封封装装为为类类,并并以以类类为为程程序序的的基基本本单单位位,但但类类又又被被封封装装在在包包中中。要要访访问问类类或或封封装装在在类类中中的的数数据据和和代代码码,必必须须清清楚楚在在什什么情况下,它们是可访问的。么情况下,它们是可访问的。v一一个个类类总总可可以以访访问问和和调调用用自自己己的的变变量量和和方方法法,但但这这个个类类之之外外的的程程序序其其

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁