高级特性:接口
接口(Interface)
1) 接口中只能定义抽象方法,默认为 public abstract 的,变量可以是static的
2) 接口中没有构造方法
3) 一个接口不实现另一个接口,但可以继承多个其他接口,一个类只能继承一个父类,但却可以实现多个接口。
实现接口的格式如下:
interface SataHdd{
//
} interface fixHdd{
//
} class SeagateHdd implements SataHdd, fixHdd{
//
}
抽象类和接口的主要区别。
1) 抽象类可以为部分方法提供实现,避免了在子类中重复实现这些方法,提高了代码的可重用性,这是抽象类的优势;而接口中只能包含抽象方法,不能包含任何实现。
2) 一个类只能继承一个直接的父类(可能是抽象类),但一个类可以实现多个接口,这个就是接口的优势。
行为模型应该总是通过接口而不是抽象类定义,所以通常是优先选用接口,尽量少用抽象类。
选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用的功能。
泛型
泛型类
class Point<T1, T2>{
T1 x;
T2 y; // 定义泛型方法
public <T1, T2> void printPoint(T1 x, T2 y){
T1 m = x;
T2 n = y;
System.out.println("This point is:" + m + ", " + n);
}
}
泛型接口
interface Info<T> {
public T getVar();
}
//实现接口
class InfoImp<T> implements Info<T> {
public T getVar() {
//
}
}
限制泛型的可用类型
public <T extends Number> T getMax(T array[]){
//
}
Java异常处理
Java异常处理通过5个关键字控制:try、catch、throw、throws和 finally。
常见的try catch
try
{ }
catch(Exception e)
{
throw e;
}
finally
{ }
throws子句
一个 throws 子句列举了一个方法可能抛出的所有异常类型。这对于除Error或RuntimeException及它们子类以外类型的所有异常是必要的。一个方法可以抛出的所有其他类型的异常必须在throws子句中声明。如果不这样做,将会导致编译错误。
static void throwOne() throws IllegalAccessException {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");
}
自定义异常
class MyException extends Exception {
private int detail;
MyException(int a) {
detail = a;
} public String toString() {
return "MyException[" + detail + "]";
}
}