JAVA编程思想学习笔记4-chap10-12-斗之气4段
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段的更多相关文章
- [Java编程思想-学习笔记]第3章 操作符
3.1 更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...
- Java编程思想 学习笔记12
十二.通过异常处理错误 Java的基本理念是“结构不佳的代码不能运行”. Java中的异常处理的目的在于通过使用少于目前数量的代码来简化大型.可靠的程序的生成,并且通过这种方式可以使你更加自信:你的 ...
- Java编程思想 学习笔记1
一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...
- [Java编程思想-学习笔记]第1章 对象导论
1.1 抽象过程 Java是一门面向对象的语言,它的一个优点在于只针对待解问题抽象,而不用为具体的计算机结构而烦心,这使得Java有完美的移植性,也即Java的口号"Write Once, ...
- Java编程思想 学习笔记11
十一.持有对象 通常,程序总是根据运行时才知道的某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型. Java实用库还提供了一套相当完整的容器类来解决这个问题,其中基本的类 ...
- Java编程思想 学习笔记10
十.内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性.然而必须要了解,内部类和组合是 ...
- Java编程思想学习笔记——类型信息
前言 运行时类型信息(RTTI:Runtime Type Information)使得我们可以在程序运行时发现和使用类型信息. Java在运行时识别对象和类的信息的方式: (1)一种是RTTI,它假定 ...
- Java编程思想 学习笔记7
七.复用类 1.组合语法 在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法叫做组合. 类中域为基本类型时能够自动被初始化为零.对象引用被初始化为null. 编译器不是简单地为 ...
- Java编程思想 学习笔记5
五.初始化与清理 1.用构造器确保初始化 在Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化.创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造 ...
- Java编程思想 学习笔记4
四.控制执行流程 1.true和false 所有条件语句都利用条件表达式的真或假来决定执行路径.注意Java不允许我们将一个数字作为布尔值使用. 2.if-else 3.迭代 while.do-whi ...
随机推荐
- asp.net 访问页面访问统计实现 for iis7
上一篇博文中< asp.net 访问页面访问统计实现 > 中在win10 (iis8+)上运行没有问题, 但客户机子是windows server 2008 的 iis7弄死不对,最好 ...
- ujquery.fancybox api开发文档中文翻译版
2016年11月17日11:57:14 基础使用 http://fancybox.net/howto 1. 首先,请确保您使用的是有效的DOCTYPE这是FancyBox看起来和功能正确需要. 2. ...
- 入手Docker容器注意事项:命令结束容器退出
在没有 docker 容器的时候,在终端(terminal)中运行 shell 命令,我们知道当终端退出时(比如关闭终端窗口或退出 ssh 会话),终端中执行的命令也会结束.所以,当我们在终端中执行持 ...
- slam course
视频地址:https://www.youtube.com/watch?v=wVsfCnyt5jA 课程网站:http://ais.informatik.uni-freiburg.de/teaching ...
- [No0000171]wpf 类层次结构Class Hierarchy
1.DispatcherObject类表示具有相关联的对象分派器.调度程序处理要在特定线程上执行工作的请求队列.它能够在其关联的线程上调用方法. DispatcherObject是对象的基类,用于跟踪 ...
- RabbitMQ的Vhost,Exchange,Queue原理分析
Vhost分析 RabbitMQ的Vhost主要是用来划分不同业务模块.不同业务模块之间没有信息交互. Vhost之间相互完全隔离,不同Vhost之间无法共享Exchange和Queue.因此Vhos ...
- strlen函数的汇编实现分析
[原创][老刘谈算法001]这位运算玩的真溜—strlen函数的汇编实现分析-『密码算法』-看雪安全论坛 https://bbs.pediy.com/thread-229243.htm
- [daily][qemu][kvm] qemu增加减少CPUID
做 DPDK 大页内存测试, 发现KVM模拟出来的CPU不支持 1GB 的大页 可以使用如下命令是否支持: [root@dpdk ~]# cat /proc/cpuinfo |grep pdpe1gb ...
- [daily][centos][iptables][firewalld] firewalld的初步了解
CentOS7中默认使用firewalld代替了iptables . 接下来将对firewalld, 做一些初步的了解. 首先读一下, redhat的文档: https://access.redhat ...
- 抽屉之Tornado实战(2)--数据库表设计
经过我们上次分析,数据库要有最基本的四张表,用户表,消息表,类型表,点赞表,评论表,接下来我们看着怎么设计吧 首先我们要清楚,表设计的代码是写在models下的 用户表 #一张表对应一个类 class ...