猿教程 Logo

Java 匿名内部类

没有名称的内部类在java中称为匿名内部类。 如果你必须覆盖类或接口的方法,应该使用它。 Java匿名内部类可以通过两种方式创建:

  1. 类(可以是抽象的或具体的)。

  2. 接口

Java匿名内部类使用类的示例

相关实例:

abstract class Person{
  abstract void eat();
}
class TestAnonymousInner{
 public static void main(String args[]){
  Person p=new Person(){
  void eat(){System.out.println("nice fruits");}
  };
  p.eat();
 }
}

输出:

nice fruits

给定代码的内部工作

相关实例:

Person p=new Person(){
  void eat(){System.out.println("nice fruits");}
  };
  1. 类被创建,但其名称由编译器决定,它扩展了Person类并提供了eat()方法的实现。

  2. 创建由Person类型的p引用变量引用的Anonymous类的对象。


内部类由编译器生成

相关实例:

import java.io.PrintStream;
static class TestAnonymousInner$1 extends Person
{
   TestAnonymousInner$1(){}
   void eat()
    {
        System.out.println("nice fruits");
    }
}

使用接口的Java匿名内部类示例

相关实例:

interface Eatable{
 void eat();
}
class TestAnnonymousInner1{
 public static void main(String args[]){
 Eatable e=new Eatable(){
  public void eat(){System.out.println("nice fruits");}
 };
 e.eat();
 }
}

输出:

nice fruits

给定代码的内部工作

它执行这个代码后面的两个主要任务:

Eatable p=new Eatable(){
  void eat(){System.out.println("nice fruits");}
  };
  1. 创建一个类,但是它的名称由实现Eatable接口的编译器决定,并提供了eat()方法的实现。

  2. 将创建一个Anonymous类的对象,由eatable类型的p引用变量引用。

内部类由编译器生成

import java.io.PrintStream;
static class TestAnonymousInner1$1 implements Eatable
{
TestAnonymousInner1$1(){}
void eat(){System.out.println("nice fruits");}
}


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/anonymous-inner-class-Java.html