2. 编程时为少打点字有时可以作方法的包装,下面两个函数就是对System.out.print的包装,请添加rint( ) 和 rintln( )的所有重载版本,以处理所有不同的java基本类型,使类P通用化,写个主函数测试他们,并把它这个类在自己的工具包中,以方便以后使用。 public class P { public static void rint(String s) { System.out.print(s); } public static void rintln(String s) { System.out.println(s); } } 3. 创建一个带有public, private, protected,和包访问权限域以及方法成员的类。创建该类的一个对象,看看在你试图调用所有类成员时,会得到什么类型的编译信息。请注意,处于同一个目录中的所有类都是缺省包的一部分。 4. 按照指示去修改Cookie类。验证bite( )不是public的。 package XXX; public class Cookie { public Cookie() { System.out.println("Cookie constructor"); } void bite() { System.out.println("bite"); } } package XXXX; public class ChocolateChip extends Cookie { public ChocolateChip() { System.out.println("ChocolateChip constructor"); } public static void main(String[] args) { ChocolateChip x = new ChocolateChip(); //! x.bite(); // Can't access bite } } 5. 把你自己的工具包导出成.jar 文件,切换一个工作区,新造个java工程,写个测试类导入这个.jar包,测试一下P这个类。 6. 以Lunch.java的形式,创建一个名为ConnectionManager的类。该类管理一个Connection对象的固定数组。客户端程序员不能够直接创建Connection对象,而只能通过ConnectionManager中的某个static方法来获取它们。当ConnectionManager之中不再有对象时,它会返回null引用。在main( )之中检测这些类(这种程序以后数据库中会经常用到)。 class Soup { private Soup() {} // (1) Allow creation via static method: public static Soup makeSoup() { return new Soup(); } // (2) Create a static object and return a reference // upon request.(The "Singleton" pattern): private static Soup ps1 = new Soup(); public static Soup access() { return ps1; } public void f() {} } class Sandwich { // Uses Lunch void f() { new Lunch(); } } // Only one public class allowed per file: public class Lunch { void test() { // Can't do this! Private constructor: //! Soup priv1 = new Soup(); Soup priv2 = Soup.makeSoup(); Sandwich f1 = new Sandwich(); Soup.access().f(); } } ///:~ 7. 在c05.local包下编写以下文件: // c05:local:PackagedClass.java package c05.local; class PackagedClass { public PackagedClass() { System.out.println("Creating a packaged class"); } } 然后在c05之外的另一个目录中创建下列文件: // c05:foreign:Foreign.java package c05.foreign; import c05.local.*; public class Foreign { public static void main (String[] args) { PackagedClass pc = new PackagedClass(); } } 解释一下为什么编译器会产生错误。如果将Foreign类置于c05.local包之中的话,会有所改变吗?
|