A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不羁的风1230 中级黑马   /  2014-5-17 21:31  /  878 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

匿名内部类是如何调用它的方法的?能不能同时调用多个方法?调用的格式

4 个回复

倒序浏览
  1. /*
  2. *匿名内部类其实就是一个匿名对象。
  3. *每一个匿名内部类只能够调用一个方法。
  4. *如果需要调用多个方法,可以用多态的方式,将一个父类的引用指向该匿名内部类。
  5. *格式:new 父类名(或接口名)(){需要覆盖的方法}.方法名();
  6. */
  7. class SuperClass
  8. {
  9.         void method()
  10.         {
  11.                 System.out.println("This is the superMothed.");
  12.         }
  13. }
  14. class Demo
  15. {
  16.         public static void main(String[] args)//此方法中只定义了一个匿名内部类
  17.         {
  18.                 new SuperClass(){
  19.                         void method()
  20.                         {
  21.                                 System.out.println("This is the childMothed.");
  22.                         }}.method();
  23.         }
  24. }
  25. //运行结果为:This is the childMethod.
复制代码

评分

参与人数 1技术分 +1 收起 理由
Silent_memory + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
楼上解释的很详细
我这儿有两个练习可以参考
  1. interface Inter
  2. {
  3.         void show(int a,int b);
  4.         void func();
  5. }
  6. class Demo
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 //补足代码;调用两个函数,要求用匿名内部类
  11.                 Inter in = new Inter()
  12.                 {
  13.                         public void show(int a,int b){}
  14.                         public void func(){}
  15.                 };
  16.                 in.show(3,4);
  17.                 in.func();
  18.                        
  19.         }
  20. }
复制代码

  1. interface Test  
  2. {  
  3.     void func();  
  4. }  
  5. class Demo  
  6. {  
  7.     public static void main(String[] args)  
  8.     {  
  9.         //通过主函数调用show,补足代码;通过(匿名内部类)进行show方法参数传递。  
  10.          
  11.         new Demo().show(new Test()  
  12.         {  
  13.             public void func(){}  
  14.         });  
  15.     }  
  16.     void show(Test t)  
  17.     {  
  18.         t.func();  
  19.     }  
  20. }  
复制代码
回复 使用道具 举报
  1. /*
  2.         匿名内部类
  3.                 就是内部类的简化写法。
  4.         简单理解:
  5.                 就是建立一个带内容的外部类或者接口的子类匿名对象。

  6.         前提:
  7.                 内部类可以继承或实现一个外部类或者接口

  8.         匿名内部类的位置:
  9.                 局部位置

  10.         匿名内部类格式为:
  11.                 new 外部类名或者接口名(){
  12.                         //重写父类或者接口的抽象方法
  13.                         //也可以定义特有的方法
  14.                 };
  15. */
  16. interface Inter {
  17.         public abstract void show();
  18.         public abstract void show2();
  19. }

  20. class Outer {
  21.         private int num = 10;

  22.         public void method(){
  23.                 //局部位置

  24.                 /*
  25.                 //局部内部类
  26.                 class Inner {
  27.                         public void function(){
  28.                                 System.out.println(num);
  29.                         }
  30.                 }
  31.                 */
  32.                 /*
  33.                 //匿名内部类
  34.                 new Inter(){
  35.                         public void show(){
  36.                                 System.out.println("show");
  37.                         }
  38.                 };
  39.                 */
  40.                

  41.                 //如果调用匿名内部类中的方法呢?
  42.                 /*
  43.                 new Inter(){
  44.                         public void show(){
  45.                                 System.out.println("show");
  46.                         }
  47.                 }.show();
  48.                 */
  49.                 /*
  50.                 new Inter(){
  51.                         public void show(){
  52.                                 System.out.println("show");
  53.                         }
  54.                         public void show2(){
  55.                                 System.out.println("show2");
  56.                         }
  57.                 }.show();
  58.                
  59.                 new Inter(){
  60.                         public void show(){
  61.                                 System.out.println("show");
  62.                         }
  63.                         public void show2(){
  64.                                 System.out.println("show2");
  65.                         }
  66.                 }.show2();
  67.                 */
  68.                 //调用匿名内部类特有方法
  69.                 /*
  70.                 new Inter(){
  71.                         public void show(){
  72.                                 System.out.println("show");
  73.                         }
  74.                         public void show2(){
  75.                                 System.out.println("show2");
  76.                         }
  77.                         public void function(){
  78.                                 System.out.println("funciton");
  79.                         }
  80.                 }.function();
  81.                 */

  82.                 /*
  83.                         发现其实匿名内部类就是一个接口或者外部类的子类对象

  84.                         学习多态的时候,可以讲 父类引用 指向 子类对象
  85.                 */
  86.                 Inter inter = new Inter(){
  87.                         public void show(){
  88.                                 System.out.println("show");
  89.                         }
  90.                         public void show2(){
  91.                                 System.out.println("show2");
  92.                         }
  93.                 };
  94.                 inter.show();
  95.                 inter.show2();
  96.         }
  97. }




  98. class NiMingInnerClassDemo {
  99.         public static void main(String[] args) {
  100.                 Outer ou = new Outer();
  101.                 ou.method();
  102.         }
  103. }
复制代码
回复 使用道具 举报
学习了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马