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

Thinking in Java 学习笔记 三

阅读更多

对于类的清理,首先在于按照一定次序销毁成员变量,但是对于有些类,创建了多个对象,有的变量在多个对象中被引用(无法销毁),清理工作变得复杂,需要计数器来记录创建的对象数目 。

 

构造器是隐性static,private是隐性final。记住这两点有助于理解许多问题。


一个两难的问题:构造器用于创建对象,需要在对象被创建时调用。对于多态 ,如类中的对象方法绑定,直到运行时才能确定(也只有这样,才能发挥多态的效力)。如果在构造器中调用多态方法,会有什么样的结果?构造执行之时,整个对象之时初始化一半,直接调用的结果可能使用了未初始化的变量,这将造成风险 。


简单来说,一个类、方法最终被编译为中间代码(可能是本机环境的汇编),然后编译为可以运行的执行代码,对于最后生成的代码而言毕竟是写死的了,所为多态的实现,运行时确定的概念又有什么意义?多态的概念应该只是对于一个类、一个方法而言的,对于整个项目,没有什么是不能确定的(随机忽视);对与类、方法而言,它自身确实不能确定传入的参数是原型还是向上转型的产物,此即多态。


初始化的顺序:
1) 在其他任何事物发生之前 ,将分配给对象的存储空间初始化成二进制的零 。
2) 调用基类的构造器。如有与子类同名的方法(覆盖),调用的为覆盖的方法。
3) 按照声明的顺序调用成员初始化方法 。
4) 调用子类的构造器。


由于基类中调用方法可能会产生不确定性(因为你也不知道什么时候自己会变成基类,你的public或protected方法被覆盖了~),最好在构造器中调用final(不可覆盖)或private(隐性final)的方法。这是为了避免未知的错误(在C++中的表现更为合理些)。


Java SE5之后的新特性:协变返回类型。之前强制返回类型、参数 、方法名都一致才能形成覆盖。新特性允许,覆盖方法的返回类型可以是子类(而非强制基类)


多态是继承灵活应用的表现,但是在设计之初考虑继承会加重设计负担 ,还有优先使用组合来解决问题。组合、继承的关系也是耦合的话,继承是强关系(编译时确定),组合要若上很多(在运行时仍然可以改变)


Java提供抽象方法的机制,abstract关键字,包含一个或多个抽象方法的类称为抽象类。(不限定编译报错),对于抽象类编译器限定无法创建对象。


一个接口 表示:所有实现了这个接口的类看起来都像这样。Java没有多重继承,但实现多个接口可以实现这个需要,相比C++,这样的优势在于,interface都是没有任何实现的类,这样就避免了多个基类中相同方法实现间的冲突。在组合类与接口的时候,类必须放在前面声明,后面才跟着接口。


放入接口中的任何域都是默认隐式static和final的。

 

分享到:
评论

相关推荐

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

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

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

    Thinking In java学习笔记

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

    thinking in java 读书笔记(五)

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

    Thinking In Java的笔记_第一章

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

    Thinking in java读书笔记.docx

    这些只是《Thinking in Java》中的一部分内容,全书还包括类、接口、多态性、异常处理、集合框架、并发编程等多个主题,是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