博客> Java 匿名内部类
Java 匿名内部类
2018-07-18 13:34 评论:0 阅读:432 西单_夜未央
JAVA 匿名内部类

/*

匿名内部类:就是没有名字的局部内部类

 前提:必须存在一个类,一个抽象类或者接口

 格式:new 类名或者接口()
 {
  重写类或者接口的方法
  定义新的方法
 };
 理解:是一个继承了类或者实现了接口的匿名子类对象

 使用:A:因为使用麻烦,建议在当借口或者抽象类中只有三个以下的方法
       B:一个方法的形式参数是一个抽象类或者接口的时候

*/

//接口
 interface AnonymityInter
 {
      public abstract void eat();
      public abstract void run();
 }

 class AnonymityInterZi implements AnonymityInter
 {
      public void eat()
      {
       System.out.println("AnonymityInterZi eat");
      }   
       public void run()
      {
       System.out.println("AnonymityInterZi run");
      }
 }

 class Anonymity
 {
      public void show()
      {
           new AnonymityInter()
           {
            public void eat()
            {
             System.out.println("eat anonymity");
            }

            public void run()
            {
             System.out.println("run anonymity");
            }
           }.eat();

           new AnonymityInter()
           {
            public void eat()
            {
             System.out.println("eat anonymity");
            }

            public void run()
            {
             System.out.println("run anonymity");
            }
           }.run();

           /*AnonymityInter inter = new AnonymityInter()
           {
            public void eat()
            {
             System.out.println("eat anonymity");
            }

            public void run()
            {
             System.out.println("run anonymity");
            }
           };
           inter.eat();
           inter.run();*/

  }

  //使用匿名局部类

  public void study(AnonymityInter a)
  {
       a.run();
       a.eat();
  }

 }

 class  AnonymityTest
 {
      public static void main(String[] args) 
      {
           Anonymity a = new Anonymity();
           a.show();
           System.out.println("--------------------------------------");
           AnonymityInterZi zi = new AnonymityInterZi();
           a.study(zi);
           System.out.println("--------------------------------------");
           //还可以直接用匿名局部类
           a.study(new AnonymityInter()
           {
                public void run()
                {
                     System.out.println("AnonymityInter run");
                }

                public void eat()
                {
                     System.out.println("AnonymityInter eat");
                }
       });
      }
 }
收藏
0
sina weixin mail 回到顶部