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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蒋大帅 中级黑马   /  2014-5-18 00:13  /  1426 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蒋大帅 于 2014-5-18 23:18 编辑

interface Inter{
        public abstract void show();
}
//完成Outer类的内容
class Outer {
        public static Inter method(){
        Inter inter=new Inter(){
        public void show(){
        System.out.println("show");
        }
        };
        return inter;
        }
}
class InnerClassTest  {
        public static void main(String[] args)
        {
                        Outer.method().show();
        }
}

2 个回复

倒序浏览
本帖最后由 帅哥哥 于 2014-5-18 01:04 编辑

首先,接口是永远不能被实例化的,这点毋庸置疑。这里用匿名内部类实现了接口。
分析一下这句就明白了 Inter inter=new Inter(){......重写show......};
inter 是一个接口类型的引用,这是允许存在的,它可以指向实现了该接口的类的对象,那么很明显,等号右边就是就是一个 实现了Inter接口的类的对象。
既然创建对象,那么对象就属于一个类,这里,这个类是一个匿名内部类。
匿名内部类最主要的应用之一就是实现接口,尤其是那些只有一两个方法的接口,因为可以当场实现,非常方便。
这是一种固定格式的写法。
ps:代码放到代码块里面吧,这样好看~~~
  1. interface Inter
  2. {
  3.         public abstract void show();
  4. }
  5. //完成Outer类的内容
  6. class Outer
  7. {
  8.         //函数返回一个 Inter 类型的引用变量
  9.         public static Inter method()
  10.         {
  11.                 //用匿名内部类实现接口
  12.                 Inter inter=new Inter()
  13.                 {
  14.                         public void show()
  15.                         {
  16.                                 System.out.println("show");
  17.                         }
  18.                 };
  19.                 //返回 inter ,inter指向实现了接口的类的对象,一个匿名内部类对象
  20.                 return inter;
  21.         }
  22. }
  23. class InnerClassTest  
  24. {
  25.         public static void main(String[] args)
  26.         {
  27.                 //这时访问方式
  28.                 Outer.method().show();
  29.         }
  30. }
复制代码




回复 使用道具 举报 1 0
好的,谢谢,我看一下匿名内部类的介绍
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马