用构造函数保证初始化,JAVA的对象创建和初始化是同一个概念,你不能要这个而不要那个。 
  
       方法的重载    区分经重载的方法:唯一的参数类型的列表 
       构造函数:如果没有构造函数,编译器会帮你创建一个无参类型的构造函数,但是如果你构造了一个,那么 
       不管你构造的是个啥样的,编译器都不会再帮你构造了。 
  
       this的用法:this只应用于那些,你明确指明要使用当前对象的reference的特殊情况。举例来说,他常用于 
       return语句以返回当前对象的reference. 
       ///////////////////////////////////// 
       public      class TestThis 
       { 
              int i = 0; 
               
              TestThis increment() 
              { 
                     i++; 
                     return this; 
              } 
  
              void print() 
              { 
                     System.out.println("i="+i); 
              } 
  
              public static void main(String[] args) 
              { 
                     TestThis x = new TestThis(); 
                     x.increment.increment.increment.print();     //i==3 
              } 
  
       } 
       ///////////////////////////////////////// 
  
       编译器不会让你在方法里调用构造函数,但可以在构造函数里调用构造函数。这个时候可以使用this 
       来进行这种调用。 
       参数的名字和类的数据成员的名字相同(有时候是刻意如此),可以利用this.x来表示他是 
       数据成员,而非参数。 
  
       static 的用法:是不是真正的“OOP”,留给理论家吧。 
  
       垃圾回收和finalize()都是靠不住的。而且用他们的地方和时机都是个问题。不要太在意。有一点要知道 
       System.gc()可以强制的执行finalize(); 
  
       成员的初始化:基本数据类型,如果是在方法内部定义的局部变量,则不初始化会出错,而如果是类的数据 
       成员,则不初始化,编译器会自动负初值。 
       下面是对基本创建对象做的一个总结,就用dog为例吧: 
       1,第一次创建dog类的对象(构造函数实际上是个static方法),或者第一次访问Dog类的static的方法或 
       字段的时候,java解释器会要搜寻classpath,找到Dog.class。 
       2,装载了Dog.class后,会对所有的static数据进行初始化。这样第一个装载class对象的时候,会先进行 
       static成员的初始化。 
       3,用new()创建新对象时,Dog对象的创建进程会先在堆里为对象分配足够的内存。 
       4,这快内存先被清零,这样就自动的把Dog对象的primitive类型的成员赋上缺省的值(对于数字就是零,或者相应的boolean和char),将reference设为null。 
       5,执行定义成员数据时所作的初始化。 
       6,执行构造函数。 
  
       ok,今天到这里,明天将学习到的是“隐藏实现”和“复用类”  
 
  |