注:本练习题答案系个人阅读后所作解答,非原书所配答案。(由于水平有限,文中出现错误还望谅解与指正)
练习1:
package lib.seventh;
class Bath {
public Bath() {
System.out.print("Bath()");
}
}
public class Exercise_1 {
private Bath bath;
public String toString() {
if(bath == null)
bath = new Bath();
return bath.toString();
}
public static void main(String[] args) {
Exercise_1 e = new Exercise_1();
System.out.print(e);
}
} /* Output:
Bath()lib.seventh.Bath@a90653
*///:~
练习2:
package lib.seventh;
import static net.util.Print.*;
class Cleanser {
private String s = "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();
print(x);
}
}
class Detergent extends Cleanser {
public void scrub() {
append(" Detergent.scrub()");
super.scrub();
}
public void foam() { append(" foam()"); }
public static void main(String[] args) {
Detergent x = new Detergent();
x.dilute();
x.apply();
x.scrub();
x.foam();
print(x);
print("Testing base class:");
Cleanser.main(args);
}
}
public class Exercise_2 extends Detergent {
public void surub() {
append(" Exercise_2.surub()");
super.scrub();
}
public void aterilize() { append(" aterilize()"); }
public static void main(String[] args) {
Exercise_2 x = new Exercise_2();
x.dilute();
x.apply();
x.foam();
x.scrub();
x.aterilize();
print(x);
print("Testing base class:");
Detergent.main(args);
}
} /* Output:
Cleanser dilute() apply() foam() Detergent.scrub() scrub() aterilize()
Testing base class:
Cleanser dilute() apply() Detergent.scrub() scrub() foam()
Testing base class:
Cleanser dilute() apply() scrub()
*///:~
练习3:
package lib.seventh;
import static net.util.Print.*;
class Art {
Art() { print("Art constructor"); }
}
class Drawing extends Art {
Drawing() { print("Drawing constructor"); }
}
public class Cartoon extends Drawing {
public static void main(String[] args) {
new Cartoon();
}
} /* Output:
Art constructor
Drawing constructor
*///:~
练习4:
package lib.seventh;
import static net.util.Print.*;
class Discipline {
public int credit;
Discipline() {