10. 创建一个单一的类。在第二个类中,将一个引用定义为第一个类的对象。运用惰性初始化(lazy initialization)来实例化这个对象。 11. 从Detergent中继承一个新的类。重载scrub()并添加一个名为sterilize()的新方法,并测试这几个方法。 class Cleanser { private String s = new String("Cleanser"); public void append(String a) { s += a; } public void dilute() { append(" dilute()"); } public void apply() { append(" apply()"); } public void scrub() { append(" scrub()"); } public String toString() { return s; } public static void main(String[] args) { Cleanser x = new Cleanser(); x.dilute(); x.apply(); x.scrub(); System.out.println(x); } } public class Detergent extends Cleanser { // Change a method: public void scrub() { append(" Detergent.scrub()"); super.scrub(); // Call base-class version } // Add methods to the interface: public void foam() { append(" foam()"); } // Test the new class: public static void main(String[] args) { Detergent x = new Detergent(); x.dilute(); x.apply(); x.scrub(); x.foam(); System.out.println(x); System.out.println("Testing base class:"); Cleanser.main(args); } } 12. 使用Cartoon.java并注解掉Cartoon类的构造器。对所发生的现象进行解释。 class Art { Art() { System.out.println("Art constructor"); } } class Drawing extends Art { Drawing() { System.out.println("Drawing constructor"); } } public class Cartoon extends Drawing { private static Test monitor = new Test(); public Cartoon() { System.out.println("Cartoon constructor"); } public static void main(String[] args) { Cartoon x = new Cartoon(); } } 13. 使用Chess.java并注解掉Chess 类的构造器。对所发生的现象进行解释。 class Game { Game(int i) { System.out.println("Game constructor"); } } class BoardGame extends Game { BoardGame(int i) { super(i); System.out.println("BoardGame constructor"); } } public class Chess extends BoardGame { Chess() { super(11); System.out.println("Chess constructor"); } public static void main(String[] args) { Chess x = new Chess(); } } 15. 证明基类构造器(a)总是会被调用(b)在导出类构造器之前被调用。 16. 创建一个仅有一个非缺省构造器的基类,并创建一个带有缺省(no-arg)构造器和非缺省构造器的导出类。在导出类的构造器中调用基类的构造器。 17. 创建一个Root 类,令其含有名为Component 1、Component 2、Component 3的类各一个实例(这些也由你写)。从Root中派生一个类stem,也含有上述各“组成部分”。所有的类都应带有可打印出类的相关信息的缺省构造器。 18.把StringUtil和NumberUtil拷贝到自己的工具包中,学会了解它们的大部分方法,注意工具类一般都有静态方法来写,写个测试类使用这个工具类来完成这个输入和输出 00898.700000 输出 898.7。 19.写一个简单定时器,定时检查C盘根目录,如果有文件被增加或删除就打印(大概XXX时间C盘被删除了(增加)了X个文件)没有变化就什么都不做。
|