zoukankan      html  css  js  c++  java
  • 接口类型作为返回类型

    接口类型作为返回类型,返回的实际上是实现了这个接口的一个对象。这是典型的多态应用,方法应返回基类的引用

    public interface AAA {
        public AAA a();
    }
    public class BBB implements AAA {
            public AAA a(){ return new BBB()};
            public  b(){};

    }

    上边那个例子。有个AAA接口,里边有个方法 a,返回值是AAA接口类型。有个BBB方法实现了AAA接口,实现了了a方法,另外又有一个b方法,a方法里返回一个BBB实例。
    问题是测试通过,但返回的BBB实例不能调用方法b,b方法是BBB的方法,怎么就不能调用了呢?

    原因呢,就是这个是父类引用指向子类,也就是说你虽然在BBB的a方法里new了一个BBB对象,但是BBB是实现了AAA的,而且a的返回类型是AAA,也就是说你现在a里new的BBB对象是被一个AAA的引用指向,所以只能调用AAA的方法,如果要调用BBB的方法就要强制转换类型

    返回的实例是BBB。但是引用类型是AAA。
    相当于AAA b = new BBB();
    这样就不能b.b();
    因为b的引用类型是AAA。AAA方法里是没有函数b()的

    这就好比
    Object  o = new Worder();
    o.doJob();是不行的
    因为Object对象里没有doJob的方法

    典型例子参见 IEnumerable 和 IEnumerator

  • 相关阅读:
    照片墙效果一多实例演示【已封装】
    把javascript event事件封装了下,兼容大多数浏览器
    catch error
    call tcl from c
    scrollbar
    sharedlibextension
    treectrl
    get file name part
    namespace eval
    glob
  • 原文地址:https://www.cnblogs.com/tech-bird/p/3610674.html
Copyright © 2011-2022 走看看