yubin8565906 2011-08-26 13:09
浏览 164
已采纳

我想深入了解下接口 比如如下程序

public class demo187
{
public static void main(String args[])
{
Comparable c =null;
c =30; //因为Integer实现了Comparable接口 30可以自动装箱为Integer
System.out.println(c);
}
}

输出结果为:30
直接输出c可以输出30,应该可以确定输出是调用了toString()方法,我在想此段程序是通过向上转型实现的那么c是Compareable的实例,那么c是不可以实现非接口里面的方法的,那为什么还可以调用toString()方法输出30呢?照理说toString()方法是Object类中的方法,Object 类又是所有对象的超类,跟接口是没有关系的。

  • 写回答

8条回答 默认 最新

  • AngelAndAngel 2011-08-26 14:40
    关注

    [quote]
    而且说接口继承了Object也是不对的,只是说接口引用的对象确实有Object的功能,我们不妨做个测试,你把任何一个类前面加个extends Object,这样是可以的,但是你把接口前面放个extends Object,是编译错误的,所以至少从语义上讲,接口的不是Object的子类,只能说,接口确实拥有Object的任何方法签名。
    [/quote]

    不是,通过我上面说的这段话,说明接口不是继承object的,只是接口有了object的所有方法签名,然后在接口引用类的时候,在调用toString这种方法签名的时候,运行时动态 后绑定接口指向的类,然后就调用了这个类的toString。就相当于它有这个方法签名而已。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c