package ch08;
class MyBook{
MyBook(int maker){
System.out.println("MyBook("+maker+")");
}
void foo(int maker){
System.out.println("foo("+maker+")");
}
}
class MyPackage{
static MyBook b1 = new MyBook(1);
MyPackage(){
System.out.println("MyPackage()");
b2.foo(1);
}
void foo2(int maker){
System.out.println("foo2("+maker+")");
}
static MyBook b2 = new MyBook(2);
}
class MyRoom{
MyBook b3 = new MyBook(3);
static MyBook b4 = new MyBook(4);
MyRoom(){
System.out.println("MyRoom()");
b4.foo(2);
}
void foo3(int maker){
System.out.println("foo3("+maker+")");
}
static MyBook b5 = new MyBook(5);
}
public class StaticIni{
public static void main(String[] args){
System.out.println("Creating new MyRoom() in main");
new MyRoom();
System.out.println("Creating new MyRoom() in main");
new MyRoom();
t2.foo2(1);
t3.foo3(1);
}
static MyPackage t2 = new MyPackage();
static MyRoom t3 = new MyRoom();
}
我的疑惑是在这里
class MyPackage{
static MyBook b1 = new MyBook(1);
MyPackage(){
System.out.println("MyPackage()");
b2.foo(1);
}
void foo2(int maker){
System.out.println("foo2("+maker+")");
}
static MyBook b2 = new MyBook(2);
}
b2这个对象为什么先使用b2.foo(1);然后再声明引用static MyBook b2 = new MyBook(2);
这样不是违反了规则了吗?