`

匿名类如何继承其它类或实现其它接口?

    博客分类:
  • Java
 
阅读更多
JButton b = new JButton("test");
b.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e){
             // tasks
     }
   });
 

这就是实现了ActionListener接口的匿名类。

java的匿名内部类的语法规则看上去有些古怪,不过如同匿名数组一样,当你只需要创建一个类的对象而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。它的语法规则是这样的:

new interfacename(){......}; 或 new superclassname(){......};  
 

  下面接着前面继续举例子:

public class Goods3 {
 public Contents cont(){
  return new Contents(){
   private int i = 11;
   public int value() {
    return i;
   }
  };
 }
}  


  这里方法cont()使用匿名内部类直接返回了一个实现了接口Contents的类的对象,看上去的确十分简洁。

  在java的事件处理的匿名适配器中,匿名内部类被大量的使用。例如在想关闭窗口时加上这样一句代码:

frame.addWindowListener(new WindowAdapter(){
 public void windowClosing(WindowEvent e){
  System.exit(0);
 }
}); 
 

  有一点需要注意的是,匿名内部类由于没有名字,所以它没有构造函数(但是如果这个匿名 内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。如果你想要初始化 它的成员变量,有下面几种方法:

  如果是在一个方法的匿名内部类,可以利用这个方法传进你想要的参数,不过记住,这些参数必须被声明为final。

  将匿名内部类改造成有名字的局部内部类,这样它就可以拥有构造函数了。

  在这个匿名内部类中使用初始化代码块。

分享到:
评论

相关推荐

    Java面试题,他会给你很好的Java面试准备,第一,谈谈final, finally, finalize的区别,第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

    不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 在Java中,还有Static Nested Class和Inner Class的概念。Static Nested Class意味着创建一个static内部类的对象,不需要一个外部...

    java基础知识学习教程-7面向对象.pptx

    成员内部类可以直接使用外部类的所有属性和方法,静态内部类不依赖于外部类,局部内部类的实例化只能在方法中进行,匿名内部类一般用于继承其它类或是实现接口。 Lambda表达式是JDK 1.8后开始的新特性,允许把函数...

    java面试宝典

    44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以implements(实现)interface(接口)? 12 45、内部类可以引用他包含类的成员吗?有没有什么限制? 12 46、java 中实现多态的机制是什么...

    java易混淆概念Anonymous Inner Class

    不能 extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 final 修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子类,不能作为父类被继承。将变量或方法声明为 ...

    Java面试题含答案.doc

    Java 面试题含答案 Java 是一种广泛应用的编程语言...28. Anonymous Inner Class (匿名内部类) 是否能够 extends(继承)其它类,是否能够implements(实现)interface(接口)? 答案:可以继承或实现接口,但不能多继承。

    java程序员必知的

    第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?  可以继承其他类或完成其他接口,在swing编程中常用此方式。  第三,Static Nested Class ...

    Java面试宝典2017.zip

    28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 21 29、super.getClass()方法调用 21 30、String是最基本的数据类型吗? 22 31、String s = ...

    2013年最全的JAVA面试题集,内部资料,绝对能帮助到你,不要后悔哦。

    18.2.Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类?是否可以 implements(实现)interface(接口)?(等级1级) 19.写出长度为10的队列,使该队列可以支持多线程数据存取(先入先出,队列为空时不能出...

    JAVA程序员面试32问

    匿名内部类可以继承其他类或实现接口。 - **继承**:匿名内部类可以继承自某个特定的类。例如,如果你想要创建一个继承自`Thread`类的新线程,你可以这样做: ```java new Thread() { public void run() { // ...

    java面试大全

    匿名内部类不能显式地继承其他类,但可以实现一个或多个接口。 **29. super.getClass()方法调用** `super.getClass()`用于获取当前类的父类的信息。 **30. String是最基本的数据类型吗?** 不是。`String`是对象,...

    Java中的静态内部类详解及代码示例

    Java中的静态内部类详解及代码示例 ...典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建外部类的对象。 在实际开发中,静态内部类可以用于实现Builder模式,提高代码的可读性和可维护性。

    java 面试宝典

    Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?** - 可以实现接口。 - 不能继承其他类,因为它已经隐式地继承了外部类。 **29. super.getClass()方法...

    Java面试宝典2013_PDF版.pdf

    28. AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 匿名内部类既可以继承一个类也可以实现多个接口。 29. super.getClass()方法调用。 super.getClass...

    java 面试题

    AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? - **继承类**:不可以直接继承其他类。 - **实现接口**:可以实现一个或多个接口。 #### 29\. super....

    变态级JAVA程序员面试32问(附答案)

    2. Anonymous Inner Class(匿名内部类)是否可以 extends(继承)其他类,是否可以 implements(实现)interface(接口)? Anonymous Inner Class 可以 extends 其他类和 implements 接口,但它不能拥有自己的...

Global site tag (gtag.js) - Google Analytics