}
public void sleep()...{
System.out.println("Animal sleep!");
}
}
return new AA();
}
}
class TestAnimal...{
public static void main(String[] args)...{
Zoo z=new Zoo();
Animal an=z.getAnimal();
an.eat();
an.sleep();
}
}
}
public void sleep()...{
System.out.println("Animal sleep!");
}
}
return new AA();
}
}
class TestAnimal...{
public static void main(String[] args)...{
Zoo z=new Zoo();
Animal an=z.getAnimal();
an.eat();
an.sleep();
}
}编译运行:

运行结果同上面相同。
匿名的内部类也可以实现抽象类。
▲ 内部类总结
1、在内部类(inner class)中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性。
2、内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好地定位与接口关联的方法在代码中的位置。
3、内部类的更多用法。
4、用户通过接口访问类,使用内部类可以隐藏实现的细节。
■ 关于异常
▲ 异常类概述
打开一个不存在的文件、网络连接中断、数组下标越界、正在加载的类文件丢失等都会引发异常。
Java中的异常类定义了程序中遇到的轻微的错误条件。
Java中的错误类定义了程序中不能恢复的严重错误条件。如内存溢出、类文件格式错误等。这一类错误由Java运行系统处理,不需要我们去处理。
Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。
当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。
如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。
如果某个语句发生异常,则它后面的语句将不会被执行,所以一般用try...catch来捕获处理异常。完整的语句为
try...catch...finally
▲ 一个除法异常的实例
程序代码如下:

class MyException