1、接口的好处 

 
可维护,可扩展 

 2、解耦 

 
高内聚,低耦合 

    什么是耦合 

 
只有类与类之间有四种关系,就会形成耦合 关联、继承、实现、依赖 

    解耦 

 
紧密耦合--->松散耦合 

 3、如何判断对象是不是某种类型 

 
引用 instanceof 类名 

 4、策略模式 

 
定义一系列算法,将每个算法都封装起来,并相互替换,使这些算法与客户分开 

    例子: 
  

 
国庆旅游 

 
定义一个借口Startegy 有一个旅游的方法 

 
定义一个实现借口Startegy的walk类 实现旅游的方法 

 
定义一个实现接口Startegy的train类 实现旅游的方法 

 
定义一个person类 person类中定义声明Startegy接口 并给出set,get方法 以及一个调用旅游方法的·方法; 



    封装变化 

 
找出变化,抽取出来,放到父类中 

 5、学过的所有原则 

 
1、OCP原则 

 
2、DIP原则 依赖倒置原则 

 
3、DRY原则 

 
4、里氏代换原则 

 
5、接口隔离:尽量使用小接口 

 
6、单一职责 

 6、以来倒置原则: 

 
高层模块不应该依赖与底层模块 二者应该依赖与抽象 

 
抽象不应该依赖于细节,细节应该依赖于抽象 

 7、高层依赖底层的缺点 

 
难复用,难维护 

 

 8、面向接口编程的好处 

 
可维护 

 
可以让程序员协同开发 

 9、什么是异常?什么是异常处理? 

 
异常是程序中的意外 

 
异常处理是java程序处理意外的一种机制 

 10、如何处理错误 

 
try{ 

 
可能发生错误的代码 

 
}catch(异常类的类名 e){ 

 
处理异常的代码 

 
} 

 11、java异常处理可以从根本上修正代码吗? 

 
不能 知识一种友好的提示 

 12、异常的分类;并解释各自包含的意义 
  

 
Throwable(可抛出物,所有异常类的父类) 

 


Error 
   
 Exception 
(不太严重的错误,可以通过修改代码来解决) 

 (非常严重的错误 在程序层面解决不了) 
  

 
RuntimeException     
Others(CheckedException) 

     
(运行时的错误) 
 (检查型错误,不修改编译不通过) 

 13、内存溢出的几个分类 

 
1、栈溢出 

 
StackOverFlowError 

 
递归 死循环 

 
2、堆溢出  

 
OutOfMemoryError 

 
数组 

 
3、方法区溢出 

 
项目大的时候,同时用了很多类文件 

 14、Exception的两个分类 

 
RuntimeException 和 CheckedException 

 15、RuntimeException的5中常见的运行时的异常 

 
1、数组下标越界  ArrayIndexOutOfBoundsException 

 
2、算数异常 
 AthrimeticException 

 
3、空指针异常 
 NullPointException 

 
(1)在null上调用方法 

 
(2)在null上访问属性 

 
4、类转换 
 ClassCastException 

 
5、数字格式化异常 
 NUmberForMatException 

 16、检查型异常处理的两种方式 

(1)、try{ 

      
 }catch(){ 

    
 } 

 
(2)、使用throws抛出给调用者处理 



 
检查性异常处理体现了java代码的健壮性 

 17、简述java异常的抛出--捕获机制 

 
遇到异常的时候 把异常类赋给e 传给JVM,JVM拿着e去catch里边instanceof找异常类的处理方法 



 
try 中代码遇到异常的时候try中异常以后的代码不会再执行,不会返回到错误发生的地方继续执行。