`
laststand
  • 浏览: 10374 次
  • 性别: 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》是一本深度解析Java编程语言的经典著作,其深入浅出的讲解和丰富的实例使得读者能够全面理解Java的精髓。以下是对书中部分关键知识点的总结: 1. **Java 泛型**:泛型是Java SE 5.0引入的重要...

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

    ### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...

    Thinking in Java读书笔记

    ### Thinking in Java 读书笔记知识点总结 #### 一、万事万物皆对象 1. **对象存储位置** - **寄存器**:程序无法直接控制。 - **栈(Stack)**:存储基本类型数据和对象引用,但对象本身不在此处。 - **堆(Heap)...

    Thinking in Java 自学笔记——第一章 对象导论

    Thinking in Java 自学笔记——第一章 对象导论 本章节总结了面向对象程序设计(Object-oriented Programming, OOP)的基本概念和原则,以帮助读者更好地理解 Java 编程语言。以下是对标题、描述、标签和部分内容的...

    王者归来之Thinking in java读书笔记

    《王者归来之Thinking in Java读书笔记》是对Bruce Eckel的经典之作《Thinking in Java》第四版的深度学习与总结。这本书是Java程序员的必备参考书,它深入浅出地阐述了Java语言的核心概念和技术,旨在帮助读者理解...

    Thinking In java学习笔记

    ### Thinking In Java 学习笔记知识点总结 #### 面向对象编程(OOP)的重要性及其影响 面向对象编程(OOP)在软件开发领域产生了深远的影响。它不仅提高了开发效率和降低了维护成本,还简化了设计流程,使得编程任务...

    thinking in java 读书笔记(五)

    《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地讲解了Java语言的核心概念和技术,对于初学者和有经验的开发者来说都是极好的学习资源。这篇读书笔记主要聚焦在第五部分的内容,可能涵盖了类、对象、...

    Thinking in java读书笔记.docx

    这些只是《Thinking in Java》中的一部分内容,全书还包括类、接口、多态性、异常处理、集合框架、并发编程等多个主题,是Java学习者的宝贵资源。理解和掌握这些基础知识是成为一名熟练Java程序员的关键步骤。

    Thinking In Java的笔记_第一章

    通过以上概述,《Thinking In Java》第一章深入浅出地讲解了Java的基础概念,涵盖了面向对象编程的核心原则、数据的存储与管理、基本类型与包装类的使用,以及高精度数字的处理技巧,为初学者和进阶学习者提供了宝贵...

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

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

    Java学习笔记.pdf

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

    包括JAVA夜未眠,thinkingJAVA和学习笔记

    在IT领域,特别是Java编程的学习过程中,"JAVA夜未眠,thinkingJAVA和学习笔记"这一主题涵盖了许多核心概念和实践技巧。以下是对这些资源的详细解释: 首先,"Java夜未眠"可能指的是一个深入探讨Java编程的书籍或...

    中文版Thinking in Java 4th编程思想(笔记)

    《中文版Thinking in Java 4th编程思想》是学习Java编程的重要参考资料,它深入浅出地介绍了面向对象编程的核心概念。下面将详细解读其中的主要知识点。 1. **对象导论** - **万物皆对象**:Java编程的核心是对象...

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

    总之,《Thinking in Java》的读书笔记结合了广泛的Java知识和实践应用,从基础知识到高级主题,从理论到实践,为学习和提升Java编程技能提供了全面的资源。无论是对初学者还是经验丰富的开发者,这都是一个宝贵的...

    用于存放java源码和Thinking of Java的资源

    其次,"Thinking in Java"的资源可能包括了课后练习、习题解答、代码注释或者其他辅助学习材料。这些资源对于自学Java的人来说极其宝贵,它们可以帮助检验学习效果,解决遇到的问题,并提供额外的实践机会。通过完成...

    Java JDK 6.0 学习笔记.pdf

    **Java JDK 6.0 学习笔记** Java JDK(Java Development Kit)是Java编程语言的核心组件,包含Java运行环境、编译器、类库以及各种工具,是开发者进行Java程序开发的基础。Java JDK 6.0是Oracle公司发布的一个重要...

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

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

    19个JAVA学习的资料,包括电子书,练习题!

    6. **Java学习笔记.doc**: 这可能是个人或教师的教学笔记,可能包含学习心得、重点难点解析,对学习者来说是宝贵的参考资料。 7. **2011最新整理Java练习题.doc**: 提供了最新的练习题目,反映了当时Java技术的发展...

Global site tag (gtag.js) - Google Analytics