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中这两个操作是绑定到一起的.

%23TIJ%u8BFB%u4E66%u7B14%u8BB003-%u521D%u59CB%u5316%u548C%u6784%u9020%u5668%[email protected]%28034.java%29%5Bjava%7Cjava%u7F16%u7A0B%u601D%u60F3%5D%0A%0A%5Btoc%5D%0A%0A%u521D%u59CB%u5316%u548C%u6E05%u7406%u662F%u6D89%u53CA%u5B89%u5168%u7684%u4E24%u4E2A%u95EE%u9898%2C%u5982%u679C%u5BF9%u8C61%u4E0D%u80FD%u6B63%u786E%u7684%u521D%u59CB%u5316%u4F1A%u5F15%u8D77%u5F88%u591A%u9519%u8BEF%2C%u6BD4%u5982%u7A7A%u6307%u9488%u5F02%u5E38%u7B49%2C%u5982%u679C%u4E0D%u80FD%u6070%u5F53%u53CA%u65F6%u7684%u6E05%u7406%2C%u4F1A%u5360%u7528%u8FC7%u591A%u8D44%u6E90.%20%0A%0A%0A%u6784%u9020%u5668%u5728%u521B%u5EFA%u4E00%u4E2A%u7C7B%u7684%u5B9E%u4F8B%u7684%u65F6%u5019%2C%u7531%u7F16%u8BD1%u5668%u53BB%u8C03%u7528%2C%u6784%u9020%u5668%u53EF%u4EE5%u4FDD%u8BC1%u6BCF%u4E2A%u5BF9%u8C61%u5728%u53EF%u88AB%u7528%u6237%u64CD%u4F5C%u524D%u90FD%u6B63%u786E%u7684%u88AB%u521D%u59CB%u5316.%0A%u5173%u4E8E%u6784%u9020%u5668%u6709%u4E2A%u95EE%u9898%2C%u5C31%u662F%u6784%u9020%u5668%u5E94%u8BE5%u53EB%u4EC0%u4E48%u540D%u5B57.%20%0A-%20%u6240%u6709%u65B9%u6CD5%u540D%u90FD%u6709%u53EF%u80FD%u548C%u7528%u6237%u81EA%u5B9A%u4E49%u51FD%u6570%u540D%u76F8%u51B2%u7A81%0A-%20%u8C03%u7528%u6784%u9020%u5668%u662F%u7F16%u8BD1%u5668%u7684%u8D23%u4EFB%2C%u90A3%u4E48%u5FC5%u987B%u8981%u8BA9%u7F16%u8BD1%u5668%u77E5%u9053%u6BCF%u4E2A%u7C7B%u7684%u6784%u9020%u5668%u7684%u540D%u5B57.%20%0A%0A%u6709%u4E24%u79CD%u529E%u6CD5%u6765%u89E3%u51B3%u8FD9%u4E24%u4E2A%u95EE%u9898%3A%0A%0A-%20%u4FDD%u7559%u4E00%u4E2A%u5173%u952E%u5B57%u505A%u6784%u9020%u5668%u7684%u51FD%u6570%u540D.%20%u6BD4%u5982python%u7684%u505A%u6CD5%2C%u4FDD%u7559%u4E00%u4E2A_init%28%29%u65B9%u6CD5%u7528%u6765%u505A%u6784%u9020%u51FD%u6570.%20%0A-%20%u6784%u9020%u5668%u91C7%u7528%u4E0E%u7C7B%u540D%u76F8%u540C%u7684%u540D%u79F0%2C%u50CFC++%u90A3%u6837%0A%0Ajava%u9009%u62E9%u4E86%u7B2C%u4E8C%u79CD%u65B9%u5F0F.%u4E3A%u4E86%u8868%u793A%u6784%u9020%u5668%u662F%u4E00%u4E2A%u7279%u6B8A%u7684%u65B9%u6CD5%2C%u6784%u9020%u5668%u662F%u6CA1%u6709%u8FD4%u56DE%u503C%u7684.%20%u6240%u4EE5%u6784%u9020%u51FD%u6570%u5199%u51FA%u6765%u5C31%u662F%u8FD9%u4E2A%u6837%u5B50%0A%60%60%60java%0APerson%28%29%7B%0A...%0A%7D%0A%60%60%60%0A%0A%20java%u4E2D%u521B%u5EFA%u5BF9%u8C61%u7684%u65F6%u5019%2C%u9700%u8981%u4F7F%u7528new%u5173%u952E%u5B57.%20%u6BD4%u5982%60new%20Person%28%29%60%20%u4ECE%u6982%u5FF5%u4E0A%u7406%u89E3%2C%u4E00%u4E2A%u5BF9%u8C61%u7684%u521B%u5EFA%u548C%u521D%u59CB%u5316%u662F%u4E24%u4E2A%u72EC%u7ACB%u7684%u64CD%u4F5C%2C%u4F46%u662Fjava%u4E2D%u628A%u4E24%u8005%u6346%u7ED1%u5230%u4E86%u4E00%u8D77%2C%u4E0D%u53EF%u5206%u5272.%0A%0A%u56E0%u4E3A%u6784%u9020%u5668%u662F%u7528%u6765%u505A%u521D%u59CB%u5316%u7684%2C%u90A3%u5B83%u6CA1%u6709%u5FC5%u8981%u8FD4%u56DE%u4EFB%u4F55%u4E1C%u897F.%28%u90A3%u4E3A%u4EC0%u4E48%u4E0D%u7528void%u5462...%u8FD4%u56DE%u503Cvoid%2C%u7136%u540E%u4E0D%u63A5%u6536%u4E0D%u5904%u7406%u4E0D%u5C31%u53EF%u4EE5%u4E86.%20%u4E2A%u4EBA%u7406%u89E3%u6CA1%u6709%u8FD4%u56DE%u503C%u7684%u4F5C%u7528%u8FD8%u662F%u7528%u6765%u533A%u5206%u6784%u9020%u51FD%u65B9%u6CD5%u548C%u5176%u4ED6%u65B9%u6CD5.%20%u8BA9%u5B83%u663E%u5F97%u66F4%u7279%u6B8A%u4E00%u70B9%29%20%u5FD8%u4E86%u5728%u54EA%u513F%u770B%u5230%u7684%u6587%u6863%u8BF4%u6784%u9020%u65B9%u6CD5%u5176%u5B9E%u8FD4%u56DE%u4E86%u6240%u521B%u5EFA%u5BF9%u8C61%u7684%u5F15%u7528%2C%u4F46%u662FTIJ%u4E0A%u8BF4new%u8868%u8FBE%u5F0F%u8FD4%u56DE%u6240%u521B%u5EFA%u5BF9%u8C61%u7684%u5F15%u7528.%20%u611F%u89C9TIJ%u4E0A%u8BF4%u7684%u66F4%u6709%u9053%u7406%2C%u6784%u9020%u65B9%u6CD5%u53EA%u662F%u7528%u6765%u8D1F%u8D23%u521D%u59CB%u5316%2C%20%u5185%u5B58%u5206%u914D%u548C%u5BF9%u8C61%u521B%u5EFA%u5E94%u8BE5%u662Fnew%u5173%u952E%u5B57%u5B8C%u6210%u7684.%20%u4F46%u662F%u8BA8%u8BBA%u8FD9%u4E2A%u662F%u6CA1%u6709%u5565%u5B9E%u9645%u610F%u4E49%u7684%2C%u56E0%u4E3Ajava%u4E2D%u8FD9%u4E24%u4E2A%u64CD%u4F5C%u662F%u7ED1%u5B9A%u5230%u4E00%u8D77%u7684.%20%0A%0A%0A%0A%0A%0A

以上是关于TIJ读书笔记03-初始化和构造器的主要内容,如果未能解决你的问题,请参考以下文章

TIJ读书笔记06-终结清理和垃圾回收

TIJ读书笔记04-方法重载

《疯狂Java讲义》读书笔记4

TIJ笔记:内部类的初始化

Think In Java读书笔记:内部类覆盖及其初始化

《Effective Java》读书笔记