Java JDK 6学习笔记 教学课件 ppt 作者 978-7-302-14995-8第09章

上传人:w****i 文档编号:94405825 上传时间:2019-08-06 格式:PPT 页数:25 大小:265.50KB
返回 下载 相关 举报
Java JDK 6学习笔记 教学课件 ppt 作者 978-7-302-14995-8第09章_第1页
第1页 / 共25页
Java JDK 6学习笔记 教学课件 ppt 作者 978-7-302-14995-8第09章_第2页
第2页 / 共25页
Java JDK 6学习笔记 教学课件 ppt 作者 978-7-302-14995-8第09章_第3页
第3页 / 共25页
Java JDK 6学习笔记 教学课件 ppt 作者 978-7-302-14995-8第09章_第4页
第4页 / 共25页
Java JDK 6学习笔记 教学课件 ppt 作者 978-7-302-14995-8第09章_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Java JDK 6学习笔记 教学课件 ppt 作者 978-7-302-14995-8第09章》由会员分享,可在线阅读,更多相关《Java JDK 6学习笔记 教学课件 ppt 作者 978-7-302-14995-8第09章(25页珍藏版)》请在金锄头文库上搜索。

1、第9章,管理类别档案 内部类别 package与import,成员内部类别、区域内部类别,成员内部类别,基本上是在一个类别中直接宣告另一个类别 所产生的文件名为外部类别名称$内部类别名称.class,public class OuterClass /内部类别 private class InnerClass / ,成员内部类别、区域内部类别,区域内部类别定义于一个方法中,类别的可视范围与生成之对象仅止于该方法之中 内部类别还可以被宣告为“static“ 由于是“static”,它不能存取外部类别的方法,而必须透过外部类别所生成的对象来进行呼叫,成员内部类别、区域内部类别,被宣告为static的

2、内部类别,事实上也可以看作是另一种名称空间的管理方式,public class Outer public static class Inner Outer.Inner inner = new Outer.Inner();,匿名内部类别,内部匿名类别可以是继承某个类别或是实作某个接口,new类别或接口() /实作 ,Object obj = new Object() public String toString() /重新定义toString() return“匿名类别物件“; ; System.out.println(obj);,匿名内部类别,注意如果要在内部匿名类别中使用外部的局部变量,变量

3、在宣告时必须為“final“, public void someMethod() finalint x = 10; /宣告final Object obj = new Object() public String toString() return String.valueOf(x); /x可在匿名类别中使用 ; System.out.println(obj); ,匿名内部类别,局部变量x并不是真正被拿来于内部匿名类别中使用 x会被匿名类别复制作为数据成员来使用 编译程序会要求您加上“final”关键词,这样您就知道不能在内部匿名类别中改变x的值 内部匿名类别在编译完成之后会产生外部类别名称$

4、编号.class,编号为1、2、3.n,每个编号n的档案对应于第n个匿名类别,设定套件(package),套件被设计与文件系统结构相对应 为了要能建立与套件相对应的文件系统结构,您在编译时可以加入“-d“参数,并指定产生的类别档案要储存在哪一个目录之下,package onlyfun.caterpillar; public class PackageDemo public static void main(String args) System.out.println(“Hello! World!“); ,设定套件(package),javac -d . UsePackage.java 在目前

5、的工作位置中会出现onlyfun目录,之下会有个caterpillar目录,而当中有個PackageDemo.class档案 “package”的设定会成为类别名称的一部份 完整类别名onlyfun.caterpillar.PackageDemo java onlyfun.caterpillar.PackageDemo,设定套件(package),完全描述(Fullyqualified)名称 完整的指出套件加类别名称 最后编译完成的.class档案必须放在onlyfun目录的caterpillar目录下,onlyfun.caterpillar.Point2D p1 = new onlyfun.

6、caterpillar.Point2D(10, 20);,bad class file: .Point2D.classclass file contains wrong class: onlyfun.caterpillar.Point2DPlease remove or make sure it appears in the correct subdirectory of the classpath. Point2D p1 = new Point2D(10, 20); 1 error,import的意义,您可以使用“import“关键词,告知编译程序您所要使用的类别是位于哪一个套件,impor

7、t onlyfun.caterpillar.Point2D; public class Point2DDemo2 public static void main(String args) Point2D p1 = new Point2D(10, 20); System.out.printf(“p1: (x, y) = (%d, %d)%n“, p1.getX(), p1.getY(); ,import的意义,使用“import“指定时,可于套件指定加上*,import onlyfun.caterpillar.*; public class Point2DDemo3 public static

8、void main(String args) Point2D p1 = new Point2D(10, 20); System.out.printf(“p1: (x, y) = (%d, %d)%n“, p1.getX(), p1.getY(); ,import的意义,可能出现以下的错误讯息 将原始码与编译完成的档案放在一起并不是一个好的管理方式 指定Classpath的方式如下执行程序,bad class file: .Point2D.java file does not contain class Point2D Please remove or make sure it appears

9、in the correct subdirectory of the classpath.,javac -d ./classes ./src/*.java,java -cp ./classes Point2DDemo3,import的意义,同名冲突,import java.util.Arrays; import onlyfun.caterpillar.Arrays; public class SomeClass ,java.util.Arrays is already defined in a single-type import import onlyfun.caterpillar.Arra

10、ys; 1 error,public与套件,没有被宣告为“public”的类别只能被同一个套件中的类别之实例呼叫使用 类别成员也可以宣告为“public“,宣告为“public“的类别成员可以被其它对象呼叫使用 如果宣告类别时不使用“public“、“protected“或“private“设定权限,则预设为套件存取范围,Point2DDemo.java:3: onlyfun.caterpillar.Point2D is not public in onlyfun.caterpillar; cannot be accessed from outside package onlyfun.cate

11、rpillar.Point2D p1 = new,public与套件,Point2DDemo.java:7: getX() is not public in onlyfun.caterpillar.Point2D; cannot be accessed from outside package p1.getX(), p1.getY(); ,public与套件,类别上的权限设定会约束类别成员上的权限设定 效果等同于,package onlyfun.caterpillar; class SomeClass / . public void someMethod() / ,package onlyfu

12、n.caterpillar; class SomeClass / . void someMethod() / ,public与套件,定义一个类别,但没有定义建构方法时,编译程序会自动帮您产生一个预设建构方法,package onlyfun.caterpillar; public class Test ,package onlyfun.caterpillar; public class Test public Test() ,public与套件,如果您自行定义建构方法,则编译程序就不会帮您加上预设建构方法 在建构时,就必须指明使用哪个建构方法,package onlyfun.caterpilla

13、r; public class Test public Test(int i) . ,public与套件,建议即使没有用到,在定义自己的建构方法的同时,也加上个没有参数的建构方法 没有使用super()指定要使用父类别的哪个建构方法,则预设会寻找父类别中无参数的建构方法,package onlyfun.caterpillar; public class Test public Test() /即使没用到,也先建立一个空的建构方法 public Test(int i) . ,public与套件,预设建构方法的访问权限是跟随着类别的访问权限而设定 由于类别宣告为public,所以预设建构方法访问权

14、限為public,package onlyfun.caterpillar; public class Test ,public与套件,如果是以下的话 则预设建构方法访问权限为套件访问权限,也就是编译程序会自动为您扩展为,package onlyfun.caterpillar; class Test ,package onlyfun.caterpillar; class Test Test() ,public与套件,import静态成员,import static java.lang.System.out; public class HelloWorld public static void m

15、ain(String args) out.println(“Hello! World!“); ,import static java.lang.System.out; import static java.util.Arrays.sort; public class ImportStaticDemo public static void main(String args) int array = 2, 5, 3, 1, 7, 6, 8; sort(array); for(int i : array) out.print(i + “ “); ,import静态成员,如果您想要“import”类别下所有的静态成员,也可以使用 * 字符 对于名称冲突编译程序可能透过以下的几个方法来解决 成员覆盖 局部变量覆盖 重载(Overload)方法上的比对,import static java.util.Arrays.*;,

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号