Java基础知识学习(五)

高级特性:接口

接口(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 + "]";
    }
}
原文地址:https://www.cnblogs.com/alex09/p/4883580.html