免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1102 | 回复: 3
打印 上一主题 下一主题

想问一个关于接口的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-17 22:27 |只看该作者 |倒序浏览
public interface Contents{
        int value();
}

interface Destination{
        String readLabel();
}

class Goods{
        private class Content implements Contents{
                private int i=11;
                public int value()
                {
                        return i;
                }
        }
       
        protected class GDestination implements Destination{
                private String lable;
                private GDestination(String whereTo)
                {
                        lable=whereTo;
                }
                public String readLabel()
                {
                        return lable;
                }
        }
       
        public Destination dest(String s)
        {
                return new GDestination(s);
        }
       
        public Contents cont()
        {
                return new Content();
        }
}

class TestGoods{
        public static void main(String []args)
        {
                Goods p=new Goods();
                Contents c=p.cont();
                Destination d=p.dest("Beijing";
        }
}

    我想问的是, 在TestGoods中为什么用接口Contents和Destination分别声称了实例c和d来接收方法cont和dest返回的内部类实例,为什么可以这样做?
接口的实例为什么可以接受内部类的实例?为什么接口可以生成实例?接口的实例可以用来做什么?接口的实例接受了内部类的实例可以用来做什么?

论坛徽章:
0
2 [报告]
发表于 2005-04-18 09:18 |只看该作者

想问一个关于接口的问题

可以这样做是因为Java的语法允许这样。接口是不可以“生成”实例的。但是一个接口类型的变量可以接受一个实现了这个接口的类的实例作为它的值,这个是Java的规定。

我倾向于不适用“接口的实例”这样的说法,因为接口是抽象的,不能实例化。
至于一个某一接口类型的变量可以做什么,可以使用这个接口声明了的任何一个成员。

论坛徽章:
0
3 [报告]
发表于 2005-04-18 17:48 |只看该作者

想问一个关于接口的问题

昨天看到,也想了想,这个是不是和JAVA中的upcasting是一个道理?
因为在java中interface也是一个class,应该是可以这样子理解的吧

论坛徽章:
0
4 [报告]
发表于 2005-04-19 08:13 |只看该作者

想问一个关于接口的问题

可以理解成upcasting
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP