zoukankan      html  css  js  c++  java
  • 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%0A@%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
  • 相关阅读:
    Thinking in Java Reading Note(9.接口)
    Thinking in java Reading Note(8.多态)
    Thinking in Java Reading Note(7.复用类)
    SQL必知必会
    Thinking in Java Reading Note(5.初始化与清理)
    Thinking in Java Reading Note(2.一切都是对象)
    鸟哥的Linux私房菜笔记(1.基础)
    Thinking in Java Reading Note(1.对象导论)
    CoreJava2 Reading Note(2:I/O)
    CoreJava2 Reading Note(1:Stream)
  • 原文地址:https://www.cnblogs.com/thecatcher/p/5838399.html
Copyright © 2011-2022 走看看