Java之内部类与异常类

来源:互联网 发布:淘宝怎么买m9大型折刀 编辑:程序博客网 时间:2024/06/08 18:30

内部类:java支持在一个类中定义一个类,成为内部类,包含内部类的类称为内部类的外嵌类。

内部类和外嵌类的关系:
1.外嵌类的成员变量在内部类中任然有效,内部类中的方法也可以调用外嵌类的方法
2.内部类的类体中不可以有类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。
3.内部类仅供他的外嵌类使用,其他类不可以用某个类的内部类声明对象。
注意:
1.有内部类的类的字节码文件的格式是 “外嵌类名$内部类名.class”.
2.内部类可以被修饰为static内部类,此时static内部类就是外嵌类中的一种静态数据类型,这样就可以在程序中使用static内部类来创建对象了

匿名类:

和子类有关的匿名类:匿名类就是一个子类。

假设Bank是类,那么下列代码就是用Bank的一个子类(匿名类)创建对象。
new Bank(){
匿名类的类体
};
注意:
1.使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类。
2.匿名类的类体中不可以声明static成员变量和static方法。

3.由于匿名类是一个子类,但没有类名,所以在创建对象时直接使用父类的构造方法

和接口有关的匿名类:

interface SpeakHello{void speak();}class HelloMachine{public void turnOn(SpeakHello hello)  //接口参数{hello.speak();}}public class E{public static void main(String args[]){HelloMachine machine = new HelloMachine();machine.turnOn(new SpeakHello(){   //和接口SpeakHello有关的匿名类public void speak(){System.out.println("hello,you are welcome");}});machine.turnOn(new SpeakHello(){  public void speak(){System.out.println("你好,欢迎光临");}});}}
代码编译后生成SpeakHello.class, HelloMachine.class, E.class, E$1.class, E$2.class(两个内部类)。

异常类:

try-catch语句:将可能出现异常的操作放在try部分,一旦try部分抛出异常对象,那么try将立刻结束执行,转向执行catch部分,例子如下:
import java.lang.Integer;class E{public static void main(String args[]){int n=0, m=0, t=1000;try{m = Integer.parseInt("8888");n = Integer.parseInt("ab56"); //发生异常,退出try,转向catcht = 7777; //t没有机会被赋值}catch(NumberFormatException e){System.out.println("发生异常"+e.getMessage());}System.out.println("n="+n+","+"m="+m+","+"t="+t);try{System.out.println("故意抛出IO异常!");throw new java.io.IOException("我是故意的");//System.out.println("这个输出语句肯定没有机会执行,必须注释,否则编译出错");}catch(java.io.IOException e){System.out.println("发生异常:"+e.getMessage());}}}

自定义异常类:点击打开链接

断言:


1 0
原创粉丝点击