黑马程序员技术交流社区

标题: 求大神解决如下题目,在线等 [打印本页]

作者: Jeffery    时间: 2015-8-23 00:25
标题: 求大神解决如下题目,在线等
interface Inter { void show(); }
        class Outer { //补齐代码 }
        class OuterDemo {
            public static void main(String[] args) {
                      Outer.method().show();
                  }
        }
要求在控制台输出”HelloWorld”

作者: 黄蒙    时间: 2015-8-23 08:03
  1. class Outer {
  2.         public static Outer method()
  3.         {
  4.                 return new Outer();
  5.         }
  6.         public void show()
  7.         {
  8.                 System.out.println("Hello World");
  9.         }
  10. }
复制代码

思路是这样的,method();本身是方法,而且可以通过类名直接调用,所以他一定是静态方法。而使用了method()方法后还能调用另一个方法,说明这个方法肯定返回的是一个对象,而在这个题中只能返回本类对象了
返回本类对象后再通过本类对象调用本类中的非静态方法。
作者: sven556677    时间: 2015-8-23 08:33
  1. package ccc;
  2. interface Inter{public void show();}
  3. class Outer{
  4.         Inter method(){
  5.                 return new Inter(){
  6.                         public void show(){
  7.                                 System.out.println("hellow world");
  8.                         }
  9.                 };
  10.         }
  11. }
  12. public class OuterDemo {
  13.         public static void main(String[] args) {
  14.                 new Outer().method().show();
  15.         }
  16. }
复制代码

主函数跟你那个不一样,你那样写我也不懂。
作者: 蛋糕的爱意    时间: 2015-8-23 08:55
//要求在控制台输出”HelloWorld”

interface Inter
{
        void show();
}
class Outer
{ //补齐代码
    public  static   Inter      method()
        {
          Inter   in=new   Inter(){
                     public  void  show()
                     {
                         System.out.println("HelloWorld");                             
                     }
                  };                              
              return   in;                 
        }
}
class OuterDemo
{
  public static void main(String[] args)
   {
       Outer.method().show();
   }
}

作者: kevin986745    时间: 2015-8-23 09:07
学习了,路过看看!
作者: pengbeilin    时间: 2015-8-23 11:16
  1. public class tex {
  2.         public static void main(String[] args) {
  3.                 Outer.method().show();
  4.         }

  5. }
  6. interface Inter { void show(); }
  7. //补齐代码
  8. class Outer{
  9.         public static Inter method(){
  10.                 return new Inter(){
  11.                 public void show(){
  12.                                 System.out.println("helloworld");
  13.                         }
  14.                 };
  15.         }
  16. }
复制代码





作者: fmi110    时间: 2015-8-23 12:24
sven556677 发表于 2015-8-23 08:33
主函数跟你那个不一样,你那样写我也不懂。

类名调用静态函数,说明需要把show()声明为 static
作者: Jeffery    时间: 2015-8-23 23:51
sven556677 发表于 2015-8-23 08:33
主函数跟你那个不一样,你那样写我也不懂。

谢谢大神了
作者: Jeffery    时间: 2015-8-23 23:52
黄蒙 发表于 2015-8-23 08:03
思路是这样的,method();本身是方法,而且可以通过类名直接调用,所以他一定是静态方法。而使用了method() ...

学习了,谢谢
作者: Jeffery    时间: 2015-8-23 23:53
蛋糕的爱意 发表于 2015-8-23 08:55
//要求在控制台输出”HelloWorld”

interface Inter

谢谢拉,长见识了
作者: zhuyaoting    时间: 2016-2-24 16:02
interface Inter {
    void show();
    // public abstract
}

class Outer {
    // 补齐代码
    public static Inter method() {
        // 子类对象 -- 子类匿名对象
        return new Inter() {
            public void show() {
                System.out.println("HelloWorld");
            }
        };
    }
}

class OuterDemo {
    public static void main(String[] args) {
        Outer.method().show();
    /*
        1:Outer.method()可以看出method()应该是Outer中的一个静态方法。
        2:Outer.method().show()可以看出method()方法的返回值是一个对象。
            又由于接口Inter中有一个show()方法,所以我认为method()方法的返回值类型是一个接口。
    */
    }
}




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