定义了接口就是确定了调用对象的标准
interface 定义接口
接口是用implements来实现接口(实现是一种特殊的继承)
接口中的方法都是抽象方法
接口中的方法权限都是public(因为要继承)
接口可以继承多个接口(类只能继承一个父类)
例子:
interface USB
{//与类不同,这里的方法定义如果没有修饰符的话不是default,而是public,所以建议加上,明确一些。
public void read();
public void write();
}
class USBer implements USB(如果实例化的话,必须没有抽象方法,所以必须重写接口中的两个方法)
{
public void read()
{
}
public void write()
{
}
}
(向上转型可以用接口的引用来接收)
异常(产生异常是产生一个异常的对象,而抛出的可以是异常的引用,也可以是异常的对象(java中只有对象而言))
对于异常分为unchecks,以及checks,分别表示着无法捕捉的异常,和可以捕捉的异常,比如说一些软件以及硬件引起的异常是unchecks,一般情况下是RuntimeException以及Error异常,这不是程序本身的异常而是其他外界因素引起的异常。
如果是RuntimeException异常的话则不需要程序设计者去捕捉,但是其他的异常包括自定义的异常则要自己去捕捉同时进行处理。
异常的语法,throw(产生异常并且抛出异常),throws(可能抛出异常(可能没有产生异常,所以没有抛出异常,所以可以不用捕捉))用于方法声明异常(可以抛出多个异常)不在本方法内进行处理(如果出现异常虚拟机会自动回溯到上一层的方法中寻找catch语句中可以捕捉此异常的处理事件)
如果对于一个throw的使用,在本方法中没有相对应的catch来处理异常,那么这个方法一定要通过throws来声明这个方法是抛出异常给上一级方法处理。
《对于所有非运行时的异常,系统都要求进行捕捉,(对运行时异常,可以选择不捕捉,只是抛出)对于Error错误,是虚拟机引起的》
主要的异常有:
ClassCastException
ClassNotFoundException
ClassNullPointerException
异常类对象的函数有
getMassage()
printStackTrace()
printStackTrace(PrintStream s)
getStackTrace()
当用自定义的异常类需要调用父类的四个构造方法。
class ComputerException extends Exception
{
public ComputerException()
{
super();
}
public ComputerException(String message)
{
super(message);
}
public ComputerException(String message,Throwable cause)
{
super(message,cause);
}
public ComputerException(Throwable cause)
{
super(cause);
}
public void run()
{
System.out.println("Computer is break.");
System.out.println("..... repairing");
try
{
Thread.sleep(3000);
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
System.out.println("Have been repaired.");
}
}
}
class MonitorException
{
private int hardware;
public MonitorException()
{
this.hardware=0;
}
public MonitorException(int hardware)
{
this.hardware=hardware;
try
{
if(hardware<0)
{
throw new ComputerException("break....");
}
}
catch(ComputerException e)
{
e.run();
//e.printStackTrace();
}
}
}
public class Main
{
public static void main(String [] agrs)
{
MonitorException a=new MonitorException(-1);
}
}