java--匿名类
匿名类的使用
1 package Test; 2 3 abstract class C525{ 4 abstract void foo(); 5 } 6 7 class B525{ 8 // 局部类只能访问外包方法中的final成员。 9 // 位于方法内部的局部类,可以访问局部类之外,外包方法之内的所以变量和方法,但是生命周期不同,延长生命周期的办法就是将变量设置为final类型。 10 int m = 21; 11 public C525 go(int x,final int y){ 12 final int n = 12; 13 return new C525(){ 14 public void foo(){ 15 System.out.println(y); 16 System.out.println(n); 17 System.out.println("m = "+m); 18 } 19 }; 20 } 21 public void gogo(C525 c00){ 22 c00.foo(); 23 } 24 } 25 public class A525 { 26 public static void main(String[] args) { 27 C525 c525 = new B525().go(1, 2); 28 c525.foo(); 29 30 C525 c5252 = new B525().go(1, 20); 31 new B525().gogo(c5252); 32 33 new B525().gogo(new C525(){ 34 public void foo(){ 35 System.out.println("Hello...."); 36 } 37 }//创建一个只有类体没有类名的类。 38 ); 39 40 } 41 }
33 new B525().gogo(new C525(){
34 public void foo(){
35 System.out.println("Hello....");
36 }
37 }//创建一个只有类体没有类名的类。
38 );
程序中new C525(){}封装了一个类体,改写了foo()方法,这个就是匿名类。
【特点】
1)、它必须继承一个类或者实现一个接口,而不能显示的使用extends或者implements,没有父类。
2)、匿名类没有构造方法。通过new<父类名> 创建对象,匿名类定义与创建对象是同时进行的。
3)、匿名类只能一次性的创建,并有父类句柄持有。
4)、匿名类不需要初始化,只有默认的构造方法
匿名类的应用
在图形用户界面(GUI)编程中,经常使用匿名类。比如使用Frame类 ---一个带有标题和缩放的窗口
1 package Test; 2 3 import java.awt.Color; 4 import java.awt.Frame; 5 6 public class Wife extends Frame{ 7 public Wife(String str){ 8 super(str); 9 } 10 public static void main(String[] args) { 11 Wife wife = new Wife("Stone"); 12 wife.setSize(200,200); 13 wife.setBackground(Color.blue); 14 wife.setVisible(true); 15 } 16 }
对于这一个窗口,可以进行移动,最大化、最小化。但是不能使用关闭窗口的叉,来关闭窗口。
其中,在JDK中有一个窗口适配器java.awt.event.WindowsAdapter专门管理这件事,它是一个抽象类,其windowClosing()方法用于关闭窗口,但这个方法体是空的。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步