`
laststand
  • 浏览: 9974 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Thinking in Java 学习笔记 二

阅读更多


编译器对于编译时数值(如随机产生)只有在第一次使用的时候才会进入初始化,即便对于static也一样,不同的是static声明了一份,在更多的实例对象创建的时候也不会再次初始化。


对于组合与继承的使用,可以的话,不要对继承滥用,优先用组合的方式。判断是否需要使用继承的一个很好的方法就是:是否需要使用向上转型(即子类作为父类参数调用)。


对于一个基类的清理 ,首先要注意的是其中的成员对象,一般清理的顺序与生成的顺序相反,然后调用类的dispose执行清理。——清理,垃圾回收,如果不能把握这些,就无法写出高质量的java代码。

对于final,仅支持基本类型,无论无何编译都确保在使用前初始化。Final也可以在声明时不初始化,这样的话就必须在类的定义域或者构造器中初始化。在参数传递中,final意味着在方法中无法修改参数引用的对象;final方法是为了方法锁定防止在子类中被修改,并且不会覆盖;final类,就是表明不希望、也确实不能继承的类(绝育,没有子类)。


对于java而言,一切都是对象(都是class),拥有自己的编译文件(.class文件),在程序运行时,只有当类第一次产生一个对象或者类中的static成员被调用,才会引发class文件的加载:类的代码初次使用时被加载。初次使用也是static初始化之时(唯一的例外是运行时才能知道确切值的那些)。


对于类的加载:如main方法,首先加载的是main所在的类,然后是其基类,知道加载到根基类为之(Object?),接着从根基类起初始化static成员,最后从根基类的构造器开始创建对象。


关于多态,多态的好处很明显,java中多态的实现是运行时方法与类的动态绑定。所以说对static、final的方法(private方法被隐形声明为final),无法实现动态绑定(在编译与类加载的时候,这些已经被写死,自然无法动态)。对于private的成员变量也是这样(private也无法多态了~~),private的变量如果子类再次声明一个,不会形成覆盖(毕竟对子类而言,它并没有继承到这些财产),而是两个类各自维护一个数据。


Java的多态的实现是伪多态:在子类被向上转型传递参数的时候,全部转化为万物之源——object类型存储,在取出来的时候需要加入强制类型转化再次固化。多态的实现关系被转化为简单的类与方法的绑定(这些绑定在运行时才能确定 )——最为疑惑的还是这里吧,对于C++而言,我也半懂其中的实现,没有把握到根本;对比java,好像更为麻烦点。

 

分享到:
评论

相关推荐

    Thinking in Java 自学笔记——第二章 一切皆对象

    Thinking in Java 自学笔记——第二章 一切皆对象 个人原创,不喜勿喷。

    Thinking in java学习笔记

    这是我经过半年的认真研读《thinking in java》这本书的读书笔记,涉及到从容器一章开始的所有后续章节的内容,只有把握我笔记中的内容我想你就差不多弄懂了<thinking in java>这本书的精华

    Thinking In java学习笔记

    这是我看Thinking in java 做的笔记,和大家分享下,如有不明白的的地方可与我私信,或者直接问度娘。

    Java学习笔记.pdf

    我的学习笔记的书本课程来自于:《Thinking in Java》和《Head First Java》 视频课程主要来自于:廖雪峰老师《Java 基础课程》 如涉及版权侵犯请联系我更正。 初来乍到,文笔稚嫩,学识浅薄,请多指教。

    java基础补足和thinking In Java学习.rar

    JAVA学习日记---Thinking in Java学习笔记 第5章总结 第五章 初始化与清理 5.1 用构造器确保初始化 1.构造器命名必须与类名相同 2.构造器也是方法,满足方法的各种特征,无参数的构造器称为默认构造器,默认构造...

    《Thinking+in+Java》读书笔记共38页.pd

    《Thinking+in+Java》读书笔记共38页.pdf.zip

    恒生电子JAVA笔试试题-Thinking-In-Java-Notes:ThinkinginJava学习笔记

    Java》学习笔记 [TOC] 阅读计划 章节列表 对象导论 一切都是对象 操作符 控制执行流程 初始化与清理 访问权限控制 复用类 多态 接口 内部类 持有对象 通过异常处理错误 字符串 类型信息 泛型 数组 容器深入研究 Java...

    Thinking in Java

    在学习java的适合看看!有学习笔记,经过整理的。

    java学习资料/笔记整理(二)

    java学习资料/笔记整理,含java语言入门中文版、JDK1.4.2手册、JSP由浅入深、Think In Java(中英文)、Thinking_in_Java_chinese_version、精通swing程序设计等8个编译的HTML帮助文档....

    Thinking_in_Java(第四版_).rar

    学习笔记

    windows10上安装mysql详细图文教程.pdf

    我的学习笔记的书本课程来自于:《Thinking in Java》和《Head First Java》 视频课程主要来自于:廖雪峰老师《Java 基础课程》 如涉及版权侵犯请联系我更正。 初来乍到,文笔稚嫩,学识浅薄,请多指教。

    java日常学习资料整理

    该资源包含了本人学习java时的笔记整理,还包含华为编程规范,以及thinking in java等多方面的学习资料,对于java从业者来说javaAPI文档以及经典书目必须要读,另外为了更具实践性还附了java实验指导书,希望对于...

    String学习笔记

    自己写的java学习笔记,有完整的体系结构,有思维导图帮助理解和记忆

    Tomcat安装、配置和部署笔记 - 辛伯达 - 博客园.pdf

    我的学习笔记的书本课程来自于:《Thinking in Java》和《Head First Java》 视频课程主要来自于:廖雪峰老师《Java 基础课程》 如涉及版权侵犯请联系我更正。 初来乍到,文笔稚嫩,学识浅薄,请多指教。

    5本java学习用书

    找了5本学习java的好书和一些例子代码和大家分享,希望能够对您能有所帮助。

    thinking-in-spring:春天学习笔记

    春天思考 春天学习笔记

    java软件笔试题-MyNotebook:我大学时期的笔记本

    java软件笔试题 my notebook 我的笔记本,大部分是在大二大三的时候写的笔记,对于已经毕业的来说可能比较基础甚至naive。对面临校招和实习的同学应该会有所帮助。这里将不再更新,请移步我的博客:。 part 1:...

    java-study:JAVA示例,关于并发和缓存

    [目录]用法一个包含...Thinking in Java》一书的源代码书行动中的Java并发有效的Java(第二) Java 8实战用Java思考(第四)深度JVM Java网络编程博客笔记包和类的名称设法具有描述性,但可能违反了建议的名称样式。

    thinking-in-spring:学春天

    春天学习笔记 Bean初始化 BeanDefinitionBuilder 新的GenericBeanDefinition Bean的命名(非强制性) BeanNameGenerator AnnotationBeanNameGenerator Bean的别名(一般XML配置) 别名 BeanDefinition的注册 ...

Global site tag (gtag.js) - Google Analytics