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. |与|| ,&与&& 分别表示什么意思?

    | & 表示位运算,针对数值进行的运算,例如 3 | 2 .78 & 99,其结果仍然应为值数 || && 表示逻辑运算,||表示或者的意思,&& 表示 ...

  2. Newtonsoft.Json 转换DateTime类型为字符串时,串内部会有一个T。解决方案

    使用Newtonsoft.Json 转换DateTime类型时,若使用标准转换,则字符串内会有一个T(虽然再转换成DateTime没有问题). 若要转换成DateTime没有T,可以加上特性: pub ...

  3. [math][mathematica] Mathematica进阶

    1. Mathematica 画函数图像 2. Mathematica 解方程 见截图,敲完一行按Shift+Enter就可以执行了.主要函数名都是大小写敏感的.写的正确会跟有提示下拉框和相信说明,非 ...

  4. java中使用jdbc配置连接串时mysql 5.6与5.7版本“编码”参数有区别!

    在mysql5.6中 java程序使用jdbc时链接字符串应该使用?characterEncoding=utf-8,而5.7版本可以省略,否则可能会有相关的语句执行结果出错! String drive ...

  5. 机器学习:K-Means/K-Means++

  6. MySQL中死锁(转)

    add by zhj: 总结一下,MySQL有主动和被动两种方式检测死锁. 主动方式:检查锁等待的图,如果有环,那就有死锁,这种情况下,会回滚事务. 被动方式:等待锁超时(即innodb_lock_w ...

  7. rar压缩类

    using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; namespa ...

  8. es分页搜索

    1.es分页语法GET /_search?from=起始数&size=页面显示条数例如:GET /test_index/test_type/_search?from=0&size=3 ...

  9. oc初步画图

    - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextMoveT ...

  10. 前端 HTML body标签相关内容 常用标签 表格标签 table

    表格标签 table 表格由<table> 标签来定义.每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由<td>标签定义).字母 td 指表 ...