一、接口
接口:如果一个类中的方法全部是抽象方法,这个抽象类就可以改写为接口。
接口:扩展功能,
因为类的单继承和多实现的特点,所以,接口中的功能比较单一。
父接口 用作 成员变量,实现类作为参数传入使用。
接口就是特殊的抽象类。接口不可以实例化。
接口与接口之间是 继承的关系。 并且可以多继承。
public interface 子接口 extends 父接口1,父接口2,父接口3{
}
类与接口之间是实现关系:实现类必须实现接口中所有的方法。
public class 实现类 implements 接口1,接口2{
}
接口1 对象名 = new 实现类名();
二、异常
异常:不是在编译时的错误,是程序运行时,可能引起的异常。
try{
//可能产生异常的代码
}catch( Exception e ){
//捕获异常的代码
e.printStackTrace(); //打印异常的堆栈轨迹 什么类型异常,第几行引发的异常
e.getMessage(); //返回一个异常信息的字符串,需要单独再打印。
}
try{
}catch( ){
//唯一不执行finally 的情况是: System.exit(1);//退出系统
System.err.print(); //会执行finally
return; //会执行finally
}finally{
//无论是否发生异常都会执行的代码
}
三、log4j的使用
1.创建Java项目
2.在项目中创建lib文件夹
3.把我们事先下载好的jar包引到我们lib中
4.右键点击 jar builder path 加入到我们项目中
5.创建测试类 书写我们的测试代码(logger)
6.创建source folder
7.在resource文件夹中创建需要的log4j.properties
java.util.InputMismatchException:类型异常。
java.lang.ArithmeticException: / by zero 被除数为零
e.printStackTrace();//输出从方法调用处到异常抛出处的方法调用序列
1e.getMessage();//返回异常信息描述字符串(描述异常产生的原因)
1.如果try块执行过程中遇到异常,那么在try块中其余剩下的代码都将被忽略。
2.即使try块和catch块中存在return语句,finally块中语句也会被执行。
finally块中不被执行的唯一情况:在异常处理代码中执行System.exit(1),将退出java虚拟机。
(System.exit(1) 要在return前)
3.执行其中一条catch后,其余的catch语句都将被忽略。
log4j.properties
log4j.rootLogger=info, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=jbit.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p %F %m %n
%d 设置输出日志的日期和时间
%l 输出日志发生的位置
%F 输出文件名
%M 输出方法名
%p 输出优先级
%m 输出代码中指定的消息
%n 换行