今日学习20190426
《java编程思想》
this
【转】https://www.cnblogs.com/yefengyu/p/4821582.html
【转】https://www.cnblogs.com/nolonely/p/5916602.html 在这个例子中,对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数
对于 this 将自身传递给外部方法
第七章 复用类
1.每一个非基本类型的对象都有一个toString()方法,而且当编译器需要一个string而你却只有一个对象的时候,该方法便会被调用。
2.对象初始化的四种方法。
1)在定义对象的地方。这意味着他们在构造器被调用之前就已经初始化。
2)在类构造器中。
3)就在主要使用这些对象之前,这种方式称为惰性初始化。在生成对象不值得及不必每次都生成对象的情况下,这种方法可以减少额外的负担。
4)使用实例化初始化。
3. 初始化基类。
当创建一个导出类对象时,该对象包含了一个基类的子对象。这个子对象和你用基类直接创建的对象时一样的。二者的去区别在于,后者来自于外部,而基类的子对象被包装在导出类对象内部。
java会自动在导出类的构造器中插入对基类构造器的调用。如果不创建构造器,java编译器会自动创建一个默认构造器。
基类构造器会在导出类构造器之前被调用。
super,必须在第一句。
4.子类可以重载父类的方法。
5.向上转型
把子类引用转为父类引用的动作。
向上转型是从一个专用类型想一个较通用类型转换,所以是安全的,但是会丢失一些方法。
6.final 参数 无法再方法中更改参数引用所指向的对象。这一特性主要用来向匿名内部类传递数据。
7.初始化和类的加载
每个类的编译代码都存在于他自己的独立文件中给文件只在需要的时候被加载。一般来说,可以说“累的代码在初次使用的时候才加载”。这通常是指加载发生在创建类的第一个对象时,但是当访问static域会static方法是,也会发生加载。
当编译器加载子类时,会自动对基类进行加载。不关是否打算产生一个基类对象,都会加载。在加载基类时,发现基类还有基类,那么第二个基类也会加载,以此类推。 接下来,根基类中的static初始化即会被执行,然后是下一个导出类,以此类推。导出类的static初始化可能会依赖于基类成员能否正确初始化。
当所有必要的类加载完毕,对象就可以创建了。首先,对象中所有的基本类型都会被设为默认值,对象引用设为null——这是通过将对象内存设为二进制零值而一举产生的。然后,基类的构造器被调用。基类构造器和导出类构造器一样,以相同的顺序来经历相同的过程。在基类构造器完成之后,实例变量按期次序被初始化。最后,高早期的其余部分被执行。