java类的初始化

关于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();
 }
}}

你可能感兴趣的:(java,C++,c,C#,F#)