内部类,简单而言就是一种代码隐藏机制:将类置于其他类的内部。具体的指明这个对象的类型: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》是一本深度解析Java编程语言的经典著作,其深入浅出的讲解和丰富的实例使得读者能够全面理解Java的精髓。以下是对书中部分关键知识点的总结: 1. **Java 泛型**:泛型是Java SE 5.0引入的重要...
### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...
### Thinking in Java 读书笔记知识点总结 #### 一、万事万物皆对象 1. **对象存储位置** - **寄存器**:程序无法直接控制。 - **栈(Stack)**:存储基本类型数据和对象引用,但对象本身不在此处。 - **堆(Heap)...
《王者归来之Thinking in Java读书笔记》是对Bruce Eckel的经典之作《Thinking in Java》第四版的深度学习与总结。这本书是Java程序员的必备参考书,它深入浅出地阐述了Java语言的核心概念和技术,旨在帮助读者理解...
Thinking in Java 自学笔记——第一章 对象导论 本章节总结了面向对象程序设计(Object-oriented Programming, OOP)的基本概念和原则,以帮助读者更好地理解 Java 编程语言。以下是对标题、描述、标签和部分内容的...
### Thinking In Java 学习笔记知识点总结 #### 面向对象编程(OOP)的重要性及其影响 面向对象编程(OOP)在软件开发领域产生了深远的影响。它不仅提高了开发效率和降低了维护成本,还简化了设计流程,使得编程任务...
《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地讲解了Java语言的核心概念和技术,对于初学者和有经验的开发者来说都是极好的学习资源。这篇读书笔记主要聚焦在第五部分的内容,可能涵盖了类、对象、...
这些只是《Thinking in Java》中的一部分内容,全书还包括类、接口、多态性、异常处理、集合框架、并发编程等多个主题,是Java学习者的宝贵资源。理解和掌握这些基础知识是成为一名熟练Java程序员的关键步骤。
通过以上概述,《Thinking In Java》第一章深入浅出地讲解了Java的基础概念,涵盖了面向对象编程的核心原则、数据的存储与管理、基本类型与包装类的使用,以及高精度数字的处理技巧,为初学者和进阶学习者提供了宝贵...
JAVA学习日记---Thinking in Java学习笔记 第5章总结 第五章 初始化与清理 5.1 用构造器确保初始化 1.构造器命名必须与类名相同 2.构造器也是方法,满足方法的各种特征,无参数的构造器称为默认构造器,默认构造...
我的学习笔记的书本课程来自于:《Thinking in Java》和《Head First Java》 视频课程主要来自于:廖雪峰老师《Java 基础课程》 如涉及版权侵犯请联系我更正。 初来乍到,文笔稚嫩,学识浅薄,请多指教。
在IT领域,特别是Java编程的学习过程中,"JAVA夜未眠,thinkingJAVA和学习笔记"这一主题涵盖了许多核心概念和实践技巧。以下是对这些资源的详细解释: 首先,"Java夜未眠"可能指的是一个深入探讨Java编程的书籍或...
《中文版Thinking in Java 4th编程思想》是学习Java编程的重要参考资料,它深入浅出地介绍了面向对象编程的核心概念。下面将详细解读其中的主要知识点。 1. **对象导论** - **万物皆对象**:Java编程的核心是对象...
总之,《Thinking in Java》的读书笔记结合了广泛的Java知识和实践应用,从基础知识到高级主题,从理论到实践,为学习和提升Java编程技能提供了全面的资源。无论是对初学者还是经验丰富的开发者,这都是一个宝贵的...
其次,"Thinking in Java"的资源可能包括了课后练习、习题解答、代码注释或者其他辅助学习材料。这些资源对于自学Java的人来说极其宝贵,它们可以帮助检验学习效果,解决遇到的问题,并提供额外的实践机会。通过完成...
**Java JDK 6.0 学习笔记** Java JDK(Java Development Kit)是Java编程语言的核心组件,包含Java运行环境、编译器、类库以及各种工具,是开发者进行Java程序开发的基础。Java JDK 6.0是Oracle公司发布的一个重要...
6. **Java学习笔记.doc**: 这可能是个人或教师的教学笔记,可能包含学习心得、重点难点解析,对学习者来说是宝贵的参考资料。 7. **2011最新整理Java练习题.doc**: 提供了最新的练习题目,反映了当时Java技术的发展...
3. **《Thinking in Java》**:Bruce Eckel的这部巨著深入细致地介绍了Java语言,不仅涵盖基础,还涉及高级特性如多线程、网络编程、反射等。它的特点是理论与实践相结合,通过大量的实例来阐述概念,是提升Java技能...