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 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动