关于JAVA类的初始化
(1)classLoad时候的初始化.
classLoad时根据书写顺序初始化class字段和方法在任何方法之前.并不初始化静态字段和方法,构造函数可作为static看只有当class被实例化并被使用或作为类变量使用时才初始化,仅初始化一次.
(2)class实例化时的初始化.
当class被实例化时,class字段根据构造方法以及类实例方法再次初始化各实例字段.
(3)构造函数的初始化.
当父类被子类继承时,子类实例化时会初始化子类的构造函数,若在子类构造函数中并未明确指出所调用的父类构造函数,将会缺省调用父类的缺省构造函数.此时父类的缺省构造函数必须存在,不然就会编译错误.
(4)在未初始化就调用编译将通不过
关于java的隐藏实现
关键字 private public protected 包级
例子:
class Initialize
{
private String s;
protected int i;
public boolean b;
char c;
String ss=f2();
private uu u;
private static String sStatic;
Initialize()
{
System.out.println(s+"\n"+i+"\n"+c+"\n"+b+"\n"+u+"\n"+ss);
System.out.println("this is father constructor!");
s="s";
i=1;
c='c';
b=true;
u=null;
}
public static void f()
{
System.out.println(sStatic);
System.out.println("this is static father function!");
}
public void f1()
{
this.f1();
}
public String f2()
{
return s;
}
}
class InitializeSon extends Initialize
{
InitializeSon()
{
System.out.println("this is son constructor!");
}
public static void main(String[] args)
{
InitializeSon init = new InitializeSon();
System.out.println(init.b+"\n"+init.c+"\n"+init.i);
Initialize.f();
//init.f1();
}
}}
分享到:
2007-06-27 09:22
浏览 961
评论