第九章 final,static,abstract,interface
一、final
1.属性:表示常量
常量:用final关键字修饰的属性,必须给初始值。
初始化:只能在以下两个地方之一,不能同时赋值。
1)声明处 2)构造方法
2.方法:表示该方法只能被继承,不能被重写。
3.类:表示该类不能产生子类,即不能被继承。
二、static:静态的
1.属性:
* 类属性:静态属性,用static修饰的。
* 属于类,该类的所有对象共享一个副本。
* 访问:类名.属性名;
* 实例属性:没有static修饰的。
* 属于每一个对象,每个对象都有自己的副本。
* 访问:对象名.属性名;
2.方法:
* 类方法:静态方法,用static修饰的。
* 属于类,该类的所有对象共享一个副本。
* 访问:类名.方法();
* 可以直接访问类属性,不能直接访问实例属性,如果要访问实例属性,需要先创建对象,用对象名.属性去调用。
* 实例方法:没有static修饰的。
* 属于每一个对象,每个对象都有自己的副本。
* 访问:对象名.方法();
* 可以直接访问实例属性、类属性。
三、abstract:抽象的
1.方法:
抽象方法:用abstract关键字修饰的,没有方法体的方法。
2.类:
抽象类:包含抽象方法的类应该是抽象类,抽象类用abstract修饰。
注意:抽象类不能实例化。
四、接口
实际就是一种规范、规定。
1.语法:
[public] interface 接口名{
//数据成员:全部是常量,且是static
[public] [final] 数据类型 名=值;
//方法:全部都是抽象方法
[public] [abstract] 返回值类型 方法名();
}
注意:
1)interface的访问修饰符只能是public或默认的。
2)数据成员的访问修饰符只能是public,可以省略,省略后系统会自动补public;final也可以省略,系统会自动添加
3)方法成员的访问修饰符只能是public,可以省略,省略后系统会自动补public;abstract也可以省略,系统会自动添加。
2.类实现接口关键字:implements
3.一个类可以实现多个接口
一个接口也可以有父接口,并且可以有多个父接口。
4.接口和抽象类的区别:
抽象类:可以包含抽象方法,也可以包含具体方法。
可以包含常量、变量
可以包含私有成员,也可以包含公有成员。
一个类只能继承一个父类,所以限制比较多。
接口:只能包含抽象方法
只能包含常量
只能包含公有成员。
一个类可以实现多个接口,所以比较灵活。
当在系统中需要明确表达继承关系时,选用抽象类,其他情况一般选用接口比较灵活。
5.instanceof:检测对象是否属于某个类型。
if(c1 instanceof IColor){
System.out.println("yes");
}else{
System.out.println("no");
}
第十章 异常处理
一、异常处理
异常:在程序运行期间所发生的不正常的事件。
分:
错误(Error):比较严重的jvm系统内部错误,程序员无能为力。
异常,例外(Exception):一般性的问题,可以解决
1.try,catch,finally
try{//有可能抛出异常的代码及其受影响的代码
代码A
代码B(有可能抛出异常)
代码C
}catch(异常类型 e){//用来捕获异常
代码D
}...
finally{//无论发生什么情况,总会执行的代码
代码E
}
代码F
1)情况1,没有异常发生:A,B,C,E,F,...
2)情况2,有异常发生但能捕获:A,B,D,E,F,...
3)情况3,有异常发生但不能捕获:A,B,E,中断!
注意:catch块可以有多块,先子类后父类。
2.throw:手动抛出异常
throw new Exception("异常信息");
3.throws:声明方法有可能抛出异常
throws Exception