TIJ读书笔记03-初始化和构造器
Posted 吾码2016
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TIJ读书笔记03-初始化和构造器相关的知识,希望对你有一定的参考价值。
初始化和清理是涉及安全的两个问题,如果对象不能正确的初始化会引起很多错误,比如空指针异常等,如果不能恰当及时的清理,会占用过多资源.
构造器在创建一个类的实例的时候,由编译器去调用,构造器可以保证每个对象在可被用户操作前都正确的被初始化.
关于构造器有个问题,就是构造器应该叫什么名字.
- 所有方法名都有可能和用户自定义函数名相冲突
- 调用构造器是编译器的责任,那么必须要让编译器知道每个类的构造器的名字.
有两种办法来解决这两个问题:
- 保留一个关键字做构造器的函数名. 比如python的做法,保留一个_init()方法用来做构造函数.
- 构造器采用与类名相同的名称,像C++那样
java选择了第二种方式.为了表示构造器是一个特殊的方法,构造器是没有返回值的. 所以构造函数写出来就是这个样子
Person(){
...
}
java中创建对象的时候,需要使用new关键字. 比如new Person()
从概念上理解,一个对象的创建和初始化是两个独立的操作,但是java中把两者捆绑到了一起,不可分割.
因为构造器是用来做初始化的,那它没有必要返回任何东西.(那为什么不用void呢…返回值void,然后不接收不处理不就可以了. 个人理解没有返回值的作用还是用来区分构造函方法和其他方法. 让它显得更特殊一点) 忘了在哪儿看到的文档说构造方法其实返回了所创建对象的引用,但是TIJ上说new表达式返回所创建对象的引用. 感觉TIJ上说的更有道理,构造方法只是用来负责初始化, 内存分配和对象创建应该是new关键字完成的. 但是讨论这个是没有啥实际意义的,因为java中这两个操作是绑定到一起的.
以上是关于TIJ读书笔记03-初始化和构造器的主要内容,如果未能解决你的问题,请参考以下文章