首页 > 代码库 > TIJ读书笔记03-初始化和构造器
TIJ读书笔记03-初始化和构造器
- TIJ读书笔记03-初始化和构造器
初始化和清理是涉及安全的两个问题,如果对象不能正确的初始化会引起很多错误,比如空指针异常等,如果不能恰当及时的清理,会占用过多资源.
构造器在创建一个类的实例的时候,由编译器去调用,构造器可以保证每个对象在可被用户操作前都正确的被初始化.
关于构造器有个问题,就是构造器应该叫什么名字.
- 所有方法名都有可能和用户自定义函数名相冲突
- 调用构造器是编译器的责任,那么必须要让编译器知道每个类的构造器的名字.
有两种办法来解决这两个问题:
- 保留一个关键字做构造器的函数名. 比如python的做法,保留一个_init()方法用来做构造函数.
- 构造器采用与类名相同的名称,像C++那样
java选择了第二种方式.为了表示构造器是一个特殊的方法,构造器是没有返回值的. 所以构造函数写出来就是这个样子
Person(){
...
}
java中创建对象的时候,需要使用new关键字. 比如new Person()
从概念上理解,一个对象的创建和初始化是两个独立的操作,但是java中把两者捆绑到了一起,不可分割.
因为构造器是用来做初始化的,那它没有必要返回任何东西.(那为什么不用void呢…返回值void,然后不接收不处理不就可以了. 个人理解没有返回值的作用还是用来区分构造函方法和其他方法. 让它显得更特殊一点) 忘了在哪儿看到的文档说构造方法其实返回了所创建对象的引用,但是TIJ上说new表达式返回所创建对象的引用. 感觉TIJ上说的更有道理,构造方法只是用来负责初始化, 内存分配和对象创建应该是new关键字完成的. 但是讨论这个是没有啥实际意义的,因为java中这两个操作是绑定到一起的.
TIJ读书笔记03-初始化和构造器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。