### 继承
继承是复用代码的一种非常重要的方式,在声明类时显示的使用extends关键字继承另一个类,即可获得这个类中的全部域,包括成员变量和方法。
一个类在虚拟机中的存在方式:虚拟机加载类后,在方法区生成这个类的java.lang.Class对象,在常量池中保存这个类的常量和成员变量,生成一个方法表用来记录类中所有方法的引用,方法的代码也存放在方法区中。
### 多态
多态在Java中实
所有的共享资源存储在主内存中,每个线程同时具有自己独立的工作内存。
工作内存中存放了主内存中变量和资源的拷贝,线程不能直接读取主内存中的数据,也不能读取其他线程的工作内存中的数据,线程之间变量值的传递需要通过主内存来进行。
### 内存交互
虚拟机中定义了以下8中操作来实现主内存与工作内存之间的交互:
作用于主内存:
- lock: 将一个变量标志为线程独占的状态
- unlock:
### 手动new Thread的缺点:
* 线程无法重用,需要频繁的新建和销毁
* 线程缺乏统一管理,线程数量有可能爆炸
* 不能对线程的执行进行计划
### 使用线程池的优点:
* 控制程序中工作线程的最大数量,提高资源的利用效率
* 可以提供定时、定期、等执行控制
* 可以重复利用线程资源,减少线程的建立和销毁次数
### Java中有五种线程池
* FixdThreadPool
线程安全:保证在多线程运行环境中,程序的能正确运行并且正确性有迹可循。主要体现在多个线程对共享资源的抢夺,同时在保证程序能正确运行的情况下减少性能消耗。
三种方式可以保证线程安全:
### 互斥同步
使用互斥来保证线程安全和同步。在Java中有Synchronized关键字和ReentrantLock两种互斥手段。
`Synchronized`关键字是由JVM提供的语法,可以修饰实例方法,静态
### 抛出异常
异常抛出后,后面的语句将不会执行
```java
throw new Exception();
```
执行过程:使用new在堆上创建异常对象,当前的执行路径被终止,从当前的执行环境中弹出异常对象的引用,异常处理机制接管程序,并寻找一个恰当的地方继续执行程序。一切都是为了保证程序从错误状态恢复。
### 异常体系
```
Throwable——>Error——>StackOve
1995年,sun公司发布JAVA1.0版本,至今已经发展了二十三年,java分为三个部分:
- java SE(标准版,主要写桌面程序,现在被C#,QT和HTML取代)
- java EE(企业版,java语言最强大的领域)
- java ME(精简版,主要活跃于嵌入式开发,现在被安卓和IOS取代)
同样作为面向对象语言,java在抽象程度上比c++要高,对于业务编程,用java比用
注解,即元数据,形式化地在代码中添加信息,把元数据与源代码文件结合在一起。注解可以完整地描述程序所需的信息。可以使用注解来简化和自动化重复的过程或代码
javaSE5有三种注解:
`@Override`表示当前方法将覆盖父类中的方法, `@Deprecated`表示使用当前元素时会发出警告, `@SuppressWarnings`关闭不必要的编译器警告信息
创建一个自定义注解时,有四种注解可以使