1.内部类:Iterator

2..this生成对外部类的引用

3..new:通过外部类对象创建内部类对象

package com.chengjie;

public class TestInnerClass {
class Inner {
String str() {
return "Inner!";
}
} public Inner getInner() {
return new Inner();
} public static void main(String[] args) {
TestInnerClass tic = new TestInnerClass();
TestInnerClass.Inner inner = tic.getInner();
System.out.println(inner.str());
inner = tic.new Inner();
System.out.println(inner.str());
}
}

4.通过内部类返回其接口类型时,可以实现内部的完全隐藏

interface  Base { }

public class TestInnerClass {
class Inner implements Base{
String str() {
return "Inner!";
}
}
public Base getInner() {
return new Inner();
}
}

5.通过匿名内部类实现工厂模式

package com.chengjie;

interface Service {
void method1();
void method2();
} interface ServiceFactory {
Service getService();
} class ServiceImpl1 implements Service {
private ServiceImpl1() {} @Override
public void method1() {
System.out.println("implment1:method1()!");
} @Override
public void method2() {
System.out.println("implment1:method2()!");
} public static ServiceFactory sf = new ServiceFactory() {
@Override
public Service getService() {
return new ServiceImpl1();
}
};
} public class TestFactory {
public static void consume(ServiceFactory sf) {
Service s = sf.getService();
s.method1();
s.method2();
} public static void main(String[] args) {
consume(ServiceImpl1.sf);
}
}

6.内部类特点:每个内部类可以独立继承一个接口的实现,无论外围类继承与否--有效补充了多重继承

7.内部类不是is-a,而是独立的实体

8.嵌套类:静态内部类,切断内外部对象的关系,生成内部类对象不再依赖外部类对象

9.ListIterator应用于List访问,可以双向与定向

10.容器

  • Collection:存1  Map:存二
  • List:顺序  ArrayList:数组实现 LinkedList:链表实现
  • HashMap:快查 TreeMap:排序 LinkedHashMap:插入顺序+快查
  • Comparable接口:需要对容器类存的对象排序时,需要此对象实现Comparable接口
  • 涉及数据结构:数组、链表、红黑树、哈希表

11.异常占位:声明异常却不进行实际抛出异常

12.Throwable:Error和Exception

13.RuntimeException不需要异常声明以及手动捕获

14.子类方法只能抛出基类方法中说明的异常

JAVA编程思想学习笔记4-chap10-12-斗之气4段的更多相关文章

  1. [Java编程思想-学习笔记]第3章 操作符

    3.1  更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...

  2. Java编程思想 学习笔记12

    十二.通过异常处理错误  Java的基本理念是“结构不佳的代码不能运行”. Java中的异常处理的目的在于通过使用少于目前数量的代码来简化大型.可靠的程序的生成,并且通过这种方式可以使你更加自信:你的 ...

  3. Java编程思想 学习笔记1

    一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...

  4. [Java编程思想-学习笔记]第1章 对象导论

    1.1  抽象过程 Java是一门面向对象的语言,它的一个优点在于只针对待解问题抽象,而不用为具体的计算机结构而烦心,这使得Java有完美的移植性,也即Java的口号"Write Once, ...

  5. Java编程思想 学习笔记11

    十一.持有对象  通常,程序总是根据运行时才知道的某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型. Java实用库还提供了一套相当完整的容器类来解决这个问题,其中基本的类 ...

  6. Java编程思想 学习笔记10

    十.内部类  可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性.然而必须要了解,内部类和组合是 ...

  7. Java编程思想学习笔记——类型信息

    前言 运行时类型信息(RTTI:Runtime Type Information)使得我们可以在程序运行时发现和使用类型信息. Java在运行时识别对象和类的信息的方式: (1)一种是RTTI,它假定 ...

  8. Java编程思想 学习笔记7

    七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...

  9. Java编程思想 学习笔记5

    五.初始化与清理 1.用构造器确保初始化  在Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化.创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造 ...

  10. Java编程思想 学习笔记4

    四.控制执行流程 1.true和false 所有条件语句都利用条件表达式的真或假来决定执行路径.注意Java不允许我们将一个数字作为布尔值使用. 2.if-else 3.迭代 while.do-whi ...

随机推荐

  1. MYSQL数据库在Windows系统中重置root密码

    1.以系统管理员身份打开cmd 2.查看MySQL是否启动: net start 3.如果启动就停止:net stop MySQL55 注:MySQL55是在我的电脑上的mysql数据库服务名 4.再 ...

  2. [No0000149]ReSharper操作指南6/16-编码协助之其他协助

    语法高亮 ReSharper扩展了默认Visual Studio的符号高亮显示.此外,它还会使用可配置的颜色突出显示字段,局部变量,类型和其他标识符.例如,ReSharper语法突出显示允许您轻松区分 ...

  3. [No000011B]为什么有些程序员悄无声息渡过35岁中年危机?

    今天分享是一些已经渡过中年危机的前辈们,看看从他们身上,是如何优雅的过渡的.如果想一直在程序这条路上走下去,建议读完.文章略长. 人物一:陈睿,前百度研发经理,携程定制旅游CTO 从程序员到架构师到管 ...

  4. hdu-6415 Rikka with Nash Equilibrium dp计数题

    http://acm.hdu.edu.cn/showproblem.php?pid=6415 题意:将1~n*m填入一个n*m矩阵 问只有一个顶点的构造方案. 顶点的定义是:某数同时是本行本列的最大值 ...

  5. linux 背单词

    命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户rpm:redhat package manager 红帽子打包管 ...

  6. HTML响应状态码

    https://www.restapitutorial.com/httpstatuscodes.html

  7. virtuanenv+flask

    1.virtualenv&flask 专门为特定项目创建一个目录和一个虚拟的Python 运行环境 # 1.安装 virtualenv$ pip3 install virtualenv #.创 ...

  8. Java 输入/输出——处理流(BufferedStream、PrintStream、转换流、推回输入流)

    关于使用处理流的优势,归纳起来就是两点:(1)对于开发人员来说,使用处理流进行输入/输出操作更简单:(2)使用处理流执行效率更高. 1.BufferedInputStream/BufferedOutp ...

  9. Windows 内存管理

    参考文献: http://blog.csdn.net/wubin1124/article/details/3760242 工作集(内存): 可以这么理解, 此值就是该进程所占用的总物理内存. 但是这个 ...

  10. 《Mysql 日志结构》

    推荐一首歌 - <往后余生>王贰浪 发现自己每天就听这么几首歌 一:慢查询日志 - SQL 完成查询并完成对于锁资源的释放之后,msqld 会将符合条件的SQL写入慢日志.因此慢日志可能和 ...