当前位置: 首页 > 面试题库 >

内部类示例,可替代接口

司马念
2023-03-14
问题内容

有人告诉我,这引起了我对此话题的好奇:

Java
gui类可以实现数百个侦听器和回调,并且许多书籍都教您在gui类中实现所有这些接口。另外,这些方面也可以在内部类中实现,因此,侦听器调用的方法不会混淆。

我想知道如何在ActionScript中做到这一点,ActionScript没有内部类,但是具有私有类。但是,我认为我还没有完全意识到内部类的含义,因此我只是想把我的头放在这种情况下,即我将使用它们来通过它们的用法来组织一个类的方法。

请显示一个示例,说明如何在ActionScript中(如果可能的话)在Java中的外观。


问题答案:

在Java中看起来像这样:

  new JButton().addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
          // code that will be performed on any action on this component
      }
  };

在这里ActionListener-是一个接口,通过调用new ActionListener() {/*interfaces method implementations goes here*/};您正在创建匿名类(由于没有名称而被命名为匿名类)-该接口的实现。

或者您可以像这样创建内部类:

 class MyActionListener implements ActionListener {
   public void actionPerformed(ActionEvent e) {
      // code that will be performed on any action on this component
   }
 };

然后像这样使用它:

 new JButton().addActionListener(new MyActionListener());

此外,您可以将侦听器声明为顶级或静态内部类。但是有时使用匿名内部类非常有用,因为它使您几乎可以在声明侦听器正在监听的组件的位置处实现侦听器。显然,如果侦听器方法代码很长,则不是一个好主意。然后最好将其移动到非匿名内部或静态嵌套或顶级类中。

通常,内部类是非静态类,它们以某种方式驻留在顶级类的主体内。在这里,您可以看到它们在Java中的示例:

//File TopClass.java
class TopClass {
    class InnerClass {
    }
    static class StaticNestedClass {
    }
    interface Fooable {
    }   
    public void foo() {
        new Fooable(){}; //anonymous class
        class LocalClass { 
        }
    }
    public static void main(String... args) {
        new TopClass();
    }
}


 类似资料:
  • 问题内容: 在Java中,您可以创建一个仅包含抽象方法的抽象类。另一方面,您可以创建一个声明相同方法的接口。在这种情况下,可以使用抽象类代替接口吗? 问题答案: 不总是: 一堂课只能延伸 一 堂课 一个类可以实现 多个 接口 Sun文档 进行了更详细的比较: 抽象类与接口 与接口不同,抽象类可以包含非静态和最终字段,并且可以包含已实现的方法。此类抽象类与接口相似,不同之处在于它们提供了部分实现,将

  • 本文向大家介绍Java内部类应用之静态内部类应用示例,包括了Java内部类应用之静态内部类应用示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java内部类应用之静态内部类。分享给大家供大家参考,具体如下: 一 点睛 如果使用static来修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象。因此使用static修饰的内部类被称为类内部类,也称为静态内部类。 stat

  • 本文向大家介绍Java中的静态内部类详解及代码示例,包括了Java中的静态内部类详解及代码示例的使用技巧和注意事项,需要的朋友参考一下 1. 什么是静态内部类 在Java中有静态代码块、静态变量、静态方法,当然也有静态类,但Java中的静态类只能是Java的内部类,也称为静态嵌套类。静态内部类的定义如下: 在介绍静态内部类之前,首先要弄清楚静态内部类与Java其它内部类的区别。 2. 内部类 什么

  • 本文向大家介绍Java内部类的全限定名规律代码示例,包括了Java内部类的全限定名规律代码示例的使用技巧和注意事项,需要的朋友参考一下 简述: 由于最近遇到不少需要反射的类,而其中不乏内部类,在此总结一下内部类的全限定名的规律。 成员内部类 测试结果表明,无论成员内部类是否为静态,其全限定名都使用如下命名方法: 包名.外部类名$内部类名 测试代码: 打印结果: classcom.test.Inne

  • 问题内容: 我有一个实用程序方法,当从中删除了不相关的逻辑时,简化的方法将如下所示: 问题是,如果是诸如的内部类,则该方法即使是公共方法也将不起作用,因为它将抛出。 有没有办法动态实例化内部类? 问题答案: 如果它是真正的 内部 类而不是 嵌套 (静态)类,则有一个隐式构造函数参数,它是对外部类实例的引用。在那个阶段您不能使用- 必须获得适当的构造函数。这是一个例子:

  • 实例内部类是指没有用 static 修饰的内部类,有的地方也称为非静态内部类。示例代码如下: 上述示例中的 Inner 类就是实例内部类。实例内部类有如下特点。 1) 在外部类的静态方法和外部类以外的其他类中,必须通过外部类的实例创建内部类的实例。 2)在实例内部类中,可以访问外部类的所有成员。 提示:如果有多层嵌套,则内部类可以访问所有外部类的成员。 3)在外部类中不能直接访问内部类的成员,而必