1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 内部匿名类_java匿名类和匿名内部类详解

java 内部匿名类_java匿名类和匿名内部类详解

时间:2023-07-06 18:51:45

相关推荐

java 内部匿名类_java匿名类和匿名内部类详解

匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下:new()

{

//类的主体

};

这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。

匿名类有两种实现方式:

1、继承一个类,重写其方法。

2、实现一个接口(可以是多个),实现其方法。

下面通过代码来说明。publicclassOut

{

voidshow()

{

System.out.println("调用Out类的show()方法");

}

}

publicclassTestAnonymousInterClass

{

//在这个方法中构造一个匿名内部类

privatevoidshow()

{

OutanonyInter=newOut()

{

//获取匿名内部类的实例

voidshow()

{

System.out.println("调用匿名类中的show()方法");

}

};

anonyInter.show();

}

publicstaticvoidmain(String[]args)

{

TestAnonymousInterClasstest=newTestAnonymousInterClass();

test.show();

}

}

程序的输出结果如下:调用匿名类中的show()方法

从输出结果可以看出,匿名内部类有自己的实现。

提示:匿名内部类实现一个接口的方式与实现一个类的方式相同,这里不再赘述。

匿名类有如下特点。

(1) 匿名类和局部内部类一样,可以访问外部类的所有成员。如果匿名类位于一个方法中,则匿名类只能访问方法中 final 类型的局部变量和参数。publicstaticvoidmain(String[]args)

{

inta=10;

finalintb=10;

OutanonyInter=newOut()

{

voidshow()

{

//System.out.println("调用了匿名类的show()方法"+a);//编译出错

System.out.println("调用了匿名类的show()方法"+b);//编译通过

}

};

anonyInter.show();

}

(2) 匿名类中允许使用非静态代码块进行成员初始化操作。OutanonyInter=newOut()

{

inti;

{//非静态代码块

i=10;//成员初始化

}

publicvoidshow()

{

System.out.println("调用了匿名类的show()方法"+i);

}

};

(3) 匿名类的非静态代码块会在父类的构造方法之后被执行。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。