用构造函数保证初始化, JAVA 的对象创建和初始化是同一个概念,你不能要这个而不要那个。 方法的重载 区分经重载的方法:唯一的参数类型的列表 构造函" name="description" />
MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用构造函数保证初始化, 方法的重载 区分经重载的方法:唯一的参数类型的列表 构造函数:如果没有构造函数,编译器会帮你创建一个无参类型的构造函数,但是如果你构造了一个,那么 不管你构造的是个啥样的,编译器都不会再帮你构造了。 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,今天到这里,明天将学习到的是“隐藏实现”和“复用类”
JAVA的对象创建和初始化是同一个概念,你不能要这个而不要那个。