黑马程序员技术交流社区

标题: 这道面试题有人会么 [打印本页]

作者: Conning    时间: 2014-5-17 22:25
标题: 这道面试题有人会么
  1. interface Inter  {
  2.         public abstract void show();
  3. }
  4. class Outer  {
  5.         //请完成Outer的内容
  6. }
  7. class  InterClassTest{
  8.         public static void main(String[] args) {
  9.                 Outer.method().show();
  10.         }
  11. }
复制代码

作者: 焚雨成灰    时间: 2014-5-17 22:32
  1. interface Inter  {
  2.     public abstract void show();
  3. }
  4. class Outer  {
  5.     //请完成Outer的内容
  6.         public static Inter method() {
  7.                 return null;
  8.         }
  9. }
  10. class  InterClassTest{
  11.     public static void main(String[] args) {
  12.             Outer.method().show();
  13.     }
  14. }
复制代码

作者: skill20    时间: 2014-5-17 22:48
  1. interface Inter  {
  2.     public abstract void show();
  3. }
  4. class Outer  {
  5.     //请完成Outer的内容
  6.         public static Inter method() {
  7.                 return new Inter(){
  8.                 public void show(){}
  9.             };
  10.         }
  11. }
  12. class  InterClassTest{
  13.     public static void main(String[] args) {
  14.             Outer.method().show();
  15.     }
  16. }
复制代码

作者: yinxjfly    时间: 2014-5-17 23:03
/*
分析思路:
1.因为在主函数中直接通过Outer类名直接调用了method()方法,
说明method()是Outer类中的一个静态方法。
2.method()方法又直接调用show()方法,但发现show()方法是接口Inter
的方法,所以可以得出,method()这个方法运算后是一个Inter类型的实例对象,
可以通过匿名内部类来实现Inter借口。
*/
interface Inter  {
        public abstract void show();
}
class Outer  {
        //请完成Outer的内容
                static Inter method()
                {
                        return new Inter()
                        {
                                public void show()
                                {
                                        System.out.println("show() funning!");
                                }                       
                        };
                }
}
class  InterClassTest{
        public static void main(String[] args) {
                Outer.method().show();
        }
}



作者: 执笔梦    时间: 2014-5-17 23:15
和楼上一样..
作者: 大漠孤烟    时间: 2014-5-17 23:24
学习啦、、楼主讲的很详细啊,我一开始只想到method()是Outer类中的一个静态方法,show是Inner接口的方法,原来可以用匿名内部类去实现inner接口,调用接口方法、、、
作者: yemenglin    时间: 2014-5-17 23:52
/*
  1、在main方法里面有一个Outer类名调用了method()方法
     那么这个method()方法肯定是Outer类中的一个静态的方法
         (因为只有本类中的静态方法才能直接被类名调用)
  2、在method()方法后面又直接调用了show()方法。show()方法又是Inter
     接口中的方法,但是Inter接口不能直接创建对象,也没有被实现。
         所以就要想到使用匿名内部类去实现Inter接口
  3、因为匿名内部类是没有名字的,所以它返回的是Inter接口类型
     匿名内部类的格式:new  外部类名或者接口名(){覆盖类或者接口中的代码。(也可以自定义内容)};
*/
interface Inter{
        public abstract void show();
}

class Outer{
        //请完成Outer的内容
        public static Inter method(){
                return new Inter(){
                        public void show(){}
                };
        }
}

class InterClassTest{
        public static void main(String[] args){
                Outer.method().show();
        }
}
作者: Dijkstra    时间: 2014-5-18 01:49
用匿名内部类
作者: 流沙    时间: 2014-5-18 07:00
基础视频里边的第110个视频,匿名内部类,一模一样的题!基础视频没好好看???
作者: ۩大世界小人物    时间: 2014-5-18 07:26
考察匿名内部类的
作者: jiang_ming    时间: 2014-5-18 09:51
  1. interface Inter
  2. {
  3.         public abstract void show();
  4. }
  5. class Outer
  6. {
  7.         //请完成Outer的内容
  8.                 public static Inter method()
  9.         {
  10.                  Inter i=new  Inter()
  11.                 {  public void show()
  12.                         {System.out.println("show");}
  13.                 };
  14.                 return i;
  15.         }


  16. }
  17. class  InterClassTest{
  18.         public static void main(String[] args) {
  19.                 Outer.method().show();
  20.         }
  21. }
复制代码



作者: 铁血丹心    时间: 2014-5-18 12:28
老毕的视频里面有的
作者: stream    时间: 2014-5-18 14:58
  1. class method implements inter
  2. { void show(){}}
复制代码

这样不就结了么
作者: stream    时间: 2014-5-18 15:09
stream 发表于 2014-5-18 14:58
这样不就结了么

少了个static
作者: youcyou    时间: 2014-5-18 15:11
匿名内部类




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2