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

Thinking in Java 学习笔记 四

阅读更多

内部类,简单而言就是一种代码隐藏机制:将类置于其他类的内部。具体的指明这个对象的类型:OuterClassName.InnerClassName。内部类对象在创建时就与外围环境建立联系,可以无条件访问外围对象所有成员 。内部类对外围类成员的访问权是怎么做到的?当外围类创建内部类对象的时候,内部类对象必定会秘密捕获一个指向外围类的对象的引用。内部类是非static的,这个实现细节由编译器来完成。.this对外围对象引用,.new创建内部对象。Interface的方法默认设为public。


对于声明为static的内部类,在引用的时候,创建内部类对象无需先创建外围对象,而内部对象也不能引用外围非static的成员。


对内部类最大的疑问就是为什么需要内部类,这项特性有什么是其他特性解决不了的适应区域么?内部类最吸引人的一点:可以独立地继承一个接口的实现,无论外围类是否已经实现,对内部类都没有影响。(作为对一个多重继承机制的补充,这项特性可以确保对一个接口的纯粹实现,而不必担心因多重继承导致的混乱)


Java最惹人争议的问题就是没有类似指针的机制,这样导致无法使用callback回调。
内部类对象中的闭包以及回调实现并不理解,希望留待以后验证。


对于一种语言,如Java应该如同对待一款软件系统一般来看待它:当你使用winxp的时候,你觉得很好很强大,win7你发现更好,有了更多的特性。但是对java你所使用的东西确一直停留在3、5年前的经典书籍的语法特性,Java SE5发了,6发了,7也要发了,这些个新的特性你会去用么?


程序的复杂性,主要是程序不能预知会产生多少对象及其生命周期。对于对象的持有(因为不能只是通过创建对每一个对象的命名来持有),java提供了一套使用容器(类似STL),名为Collection,包含了基本类型List、Set、Queue、Map(Google Collection可以尝试使用,有更大的惊喜)Set对每个值都只是保存一个对象,Map允许将某些对象与其他对象关联起来的关联数组,Java容器类都可以自动地调节自己的尺寸(这点与ArrayList类似,这个是最基本最可靠的容器了)
对于ArrayList而言,保存的都是Object类(java中多态的伪实现也是如此),所以你可以随便将各个类型的对象add进去,如论编译还是运行都没有问题。所以在取出时(get)你得到的也只是Object的引用,必须将其转为需要的类型(强制转型,不然使用时语法错误)。如果你将取得的A类对象强制转为B类对性,那就要悲剧。为了防止这种现象,可以使用预定义的泛型,ArrayList<A>这样的好处在于在编译期就能防止错误类型放入 。


这就是一个编译时错误与运行时错误,当然我们期望在编译时就解决错误,而绝非是运行时。向上转型也是允许的。
Java容器的作用为保存对象。分为两类:
1) collection,服从一或多条规则的许留:List顺序保存;Set不能有重复;Queue按照队列来处理。
2) Map。一组成对的“键值对”对象,语序你使用键(key)来查找值(value)
尽管并非如此,你大部分编程实践都在与这些接口打交道。这些都有扩展,如ArrayList至于List,HashMap、TreeMap之于Map等等。

 

分享到:
评论

相关推荐

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

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

    Thinking in java学习笔记

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

    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的适合看看!有学习笔记,经过整理的。

    Thinking_in_Java(第四版_).rar

    学习笔记

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

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

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

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

    String学习笔记

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

    java日常学习资料整理

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