已經第N次閱讀Bruce Eckle大師的《Thinking in java》了,每一次閱讀都有不同的收穫。閒來無聊,我結合第一章java的upcasting機制和第六章java初始化與類的裝載做了一個對象初始化的例子。
Shape類
package org.bjtu.edu;
public class Shape {
private int i=print("現在初始化Shape的i");
public void draw(){
}
public void erase(){
}
public Shape(){
System.out.println("實例化Shape");
}
private static int print(String s){
System.out.println(s);
return 47;
}
}
public class Shape {
private int i=print("現在初始化Shape的i");
public void draw(){
}
public void erase(){
}
public Shape(){
System.out.println("實例化Shape");
}
private static int print(String s){
System.out.println(s);
return 47;
}
}
Circle類
package org.bjtu.edu;
public class Circle extends Shape{
private int i=print("現在初始化Circle的i");
public void draw(){
System.out.println("畫一個圓形");
}
public void erase(){
System.out.println("擦除一個圓形");
}
public Circle(){
System.out.println("實例化Circle");
}
private static int print(String s){
System.out.println(s);
return 47;
}
}
public class Circle extends Shape{
private int i=print("現在初始化Circle的i");
public void draw(){
System.out.println("畫一個圓形");
}
public void erase(){
System.out.println("擦除一個圓形");
}
public Circle(){
System.out.println("實例化Circle");
}
private static int print(String s){
System.out.println(s);
return 47;
}
}
Square類
package org.bjtu.edu;
public class Square extends Shape{
public void draw(){
System.out.println("畫一個矩形");
}
public void erase(){
System.out.println("擦除一個矩形");
}
}
public class Square extends Shape{
public void draw(){
System.out.println("畫一個矩形");
}
public void erase(){
System.out.println("擦除一個矩形");
}
}
test測試
package org.bjtu.edu;
public class test {
private int i=print("現在初始化test的i");
private static int j=print("現在初始化test的j");
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("現在運行test的main方法");
Circle cr1;
Circle cr=new Circle();
//Square sq=new Square();
test t=new test();
t.dostuff(cr);
//t.dostuff(sq);
}
public test(){
System.out.println("現在實例化一個test");
}
public void dostuff(Shape s){
s.draw();
}
private static int print(String s){
System.out.println(s);
return 47;
}
public static void init(){
System.out.println("現在運行test的static方法");
}
}
public class test {
private int i=print("現在初始化test的i");
private static int j=print("現在初始化test的j");
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("現在運行test的main方法");
Circle cr1;
Circle cr=new Circle();
//Square sq=new Square();
test t=new test();
t.dostuff(cr);
//t.dostuff(sq);
}
public test(){
System.out.println("現在實例化一個test");
}
public void dostuff(Shape s){
s.draw();
}
private static int print(String s){
System.out.println(s);
return 47;
}
public static void init(){
System.out.println("現在運行test的static方法");
}
}
輸出結果
現在初始化test的j
現在運行test的main方法
現在初始化Shape的i
實例化Shape
現在初始化Circle的i
實例化Circle
現在初始化test的i
現在實例化一個test
畫一個圓形
現在運行test的main方法
現在初始化Shape的i
實例化Shape
現在初始化Circle的i
實例化Circle
現在初始化test的i
現在實例化一個test
畫一個圓形