(第5章笔记) package com; //package 语句必须作为文件的第一个非注释语句出现 //编译器强迫package名的第一部分是类创建者的因特网域名 //按这一约定行事,package的名称就肯定不会重复 //Java 解释器的工作程序如下: //1.找到环境变量CLASSPATH //2.CLASSPATH 包含了一个或多个目录,它们作为一种特殊的"根"使用,从这里展开对.class 文件的搜索 //3.将每个点号(句点)替换成一个斜杠,从而生成从CLASSPATH 根开始的一个路径名 //那么如何在其他类(不在同一包中)里使用类Test4呢? //首先,Test4必须是public,并且需要让其他类使用的方法都必须是public //然后,如果Test4的完整路径是:d:/java/com/Test4.java,则必须将d:/java/添加系统环境变量(classpath)中去 //使用JAR 文件时要注意一个问题:必须将JAR文件的名字置于类路径里加到classpath中(如d:/java/com/xx.jar),而不仅仅是它所在的路径 //最后,使用时,在开始加上import com;即可 public class Test4 { //编译单元的内部,可以有一个公共(public)类,它必须拥有与文件相同的名字 //如果public改成protected或private会产生错误,不加修饰符(友好)是可以的 // private Test4(){} 若设成private,可以通过以下两种方式生成对象 // (1)public static Test4 makeTest4() {return new Test4();} // (2)private static Test4 t4 = new Test4(); // public static Test4 access<mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js"></mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script>Test4() {return t4;} public Test4(){ //构建器设成private,可以防止对构建器的操作,并且禁止继承 } protected int a; private int b; public static int c; public static void main(String[] args) { System.out.println("a"); Test3 t3 = new Test3(); Temp temp = new Temp(); temp.x = 3; } } class Temp{ //该类为友好类,同一个包(当前为com)内的类都可以访问 //即使类外包里的类import了当前包,也不能被访问(相当于private) int i; protected int x; //protected成员在包里仍然可以当做友好的访问,当在包外部,只有继承类才可以访问 //另外,包外的继承类是不能访问友好对象和方法的 Test4 t4 = new Test4(); void f(){ t4.a = 2; } } //为获得对一个访问权限,唯一的方法就是: //(1) 使成员成为"public"(公共的)。这样所有人从任何地方都可以访问它。 //(2) 变成一个"友好"成员,方法是舍弃所有访问指示符,并将其类置于相同的包内。 //(3) 正如以后引入"继承"概念后大家会知道的那样,一个继承的类既可以访问一个protected成员,也可以访问一个public成员(但不可访问private 成员)。 //只有在两个类位于相同的包内时,它才可以访问友好成员。 //(4) 提供"访问器/变化器"方法(亦称为"获取/设置"方法),以便读取和修改值。这是OOP 环境中最正规的一种方法,也是Java Beans 的基础。