黑马程序员技术交流社区

标题: 关于返回值为interface类的问题 [打印本页]

作者: Laopozini123    时间: 2016-3-24 18:38
标题: 关于返回值为interface类的问题

  1. class a89 {
  2.         public static void main(String[] args) {
  3.                   Outer.method().show();
  4.           }
  5. }



  6. interface Inter {
  7. void show();
  8. }
  9. class Outer { //补齐代码
  10.         public static Inter method( ){
  11.                 return new Inter(){
  12.                         public void show(){
  13.                                 System.out.println("HelloWorld");
  14.                         }
  15.                 };
  16.         }//补齐代码
  17. }
复制代码
上述代码中,两个补齐代码之间的是自己添加的代码,这个视频也讲过,但是有个疑问
outer类里面创建的method方法为什么返回值是Inter类型的?  Inter是接口啊~这个到底是怎么回事~能弄明白的大神,能不能告知一下?
10.16视频讲的,10.18也讲了,都在这个地方弄不明白了,为什么能返回一个Inter呢?????

作者: lyy0525    时间: 2016-3-24 18:54
new Inter(){
                        public void show(){
                                System.out.println("HelloWorld");
                        }
这句话相当于创建一个
class Zi implements Inter{
        public void show(){
        System.out.println("HelloWorld");
        }
}
然后 Inter i=new zi();
作者: wlsperfect    时间: 2016-3-24 19:52
new Inter(){
                        public void show(){
                                System.out.println("HelloWorld");
                        }
                };是一个匿名内部类,这个类是inter接口的子类,因此return它,就相当于返回一个inter子类对象,
而定义返回值类型为Inter,正是父类引用指向子类对象,接口虽然不能直接new,但可以接收子类对象




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