2015-04-20 15:36:01 -07:00
|
|
|
//: reusing/Bath.java
|
|
|
|
// Constructor initialization with composition.
|
|
|
|
import static net.mindview.util.Print.*;
|
|
|
|
|
|
|
|
class Soap {
|
|
|
|
private String s;
|
|
|
|
Soap() {
|
|
|
|
print("Soap()");
|
|
|
|
s = "Constructed";
|
|
|
|
}
|
2015-05-05 11:20:13 -07:00
|
|
|
@Override
|
2015-04-20 15:36:01 -07:00
|
|
|
public String toString() { return s; }
|
2015-05-18 23:05:20 -07:00
|
|
|
}
|
2015-04-20 15:36:01 -07:00
|
|
|
|
|
|
|
public class Bath {
|
|
|
|
private String // Initializing at point of definition:
|
|
|
|
s1 = "Happy",
|
|
|
|
s2 = "Happy",
|
|
|
|
s3, s4;
|
|
|
|
private Soap castille;
|
|
|
|
private int i;
|
|
|
|
private float toy;
|
|
|
|
public Bath() {
|
|
|
|
print("Inside Bath()");
|
|
|
|
s3 = "Joy";
|
|
|
|
toy = 3.14f;
|
|
|
|
castille = new Soap();
|
2015-05-18 23:05:20 -07:00
|
|
|
}
|
2015-04-20 15:36:01 -07:00
|
|
|
// Instance initialization:
|
|
|
|
{ i = 47; }
|
2015-05-05 11:20:13 -07:00
|
|
|
@Override
|
2015-04-20 15:36:01 -07:00
|
|
|
public String toString() {
|
|
|
|
if(s4 == null) // Delayed initialization:
|
|
|
|
s4 = "Joy";
|
|
|
|
return
|
|
|
|
"s1 = " + s1 + "\n" +
|
|
|
|
"s2 = " + s2 + "\n" +
|
|
|
|
"s3 = " + s3 + "\n" +
|
|
|
|
"s4 = " + s4 + "\n" +
|
|
|
|
"i = " + i + "\n" +
|
|
|
|
"toy = " + toy + "\n" +
|
|
|
|
"castille = " + castille;
|
2015-05-18 23:05:20 -07:00
|
|
|
}
|
2015-04-20 15:36:01 -07:00
|
|
|
public static void main(String[] args) {
|
|
|
|
Bath b = new Bath();
|
|
|
|
print(b);
|
|
|
|
}
|
|
|
|
} /* Output:
|
|
|
|
Inside Bath()
|
|
|
|
Soap()
|
|
|
|
s1 = Happy
|
|
|
|
s2 = Happy
|
|
|
|
s3 = Joy
|
|
|
|
s4 = Joy
|
|
|
|
i = 47
|
|
|
|
toy = 3.14
|
|
|
|
castille = Constructed
|
|
|
|
*///:~
|