zoukankan      html  css  js  c++  java
  • 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()方法用于关闭窗口,但这个方法体是空的。

  • 相关阅读:
    public/private/protected的具体区别
    解决密码自动填充的问题
    tp导出excel
    好久没更了,确实太忙了--dedecms篇
    解决css的float父div没有高度
    随笔
    总结最近写的h5项目
    ajax删除当前行
    开发时常遇到的小问题
    js处理时间戳
  • 原文地址:https://www.cnblogs.com/plxx/p/3361430.html
Copyright © 2011-2022 走看看