开发者社区> 问答> 正文

java接口的方法可以不全部实现??报错

太奇怪了,抽象类的需要全实现,而接口却不需要,这是怎么回事?

代码如下:interface Shape1{
  String toString();
}
class Circle implements Shape1{
 //没有报错
}
abstract class Shape2{
 public abstract String toString();
}
class Rhomboid extends Shape2{
 //报错
}

展开
收起
爱吃鱼的程序员 2020-06-14 17:04:33 1037 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    toString().你确定你没开玩笑?感谢提醒不全部实现还能叫接口么。。。你自己去写得试试,编译确实可以通过,我在想是不是这样接口更灵活一些只有接口的抽象实现类不用全实现,普通接口的方法都需要实现的总结的好<divclass='ref'>

    引用来自“PythonLee”的评论

    toString().你确定你没开玩笑?toString确实默认了,现在问题来了,Shape2里面也有抽象的toString,而他的子类应该也会默认实现toString,可是编译器为什么提示我错误而且继承接口的抽象实现类的子类还必须实现抽象父类中没有实现的方法。。。。

    LZ好深意:要知道Circle继承了Object,Object实现了toString().

    至于下面的抽象类Rhomboid是因为java是单继承,可没有直接父类实现toString().

    abstractclassShape2{
       publicabstractStringtoString();
    }
    classRTmpextendsShape2{
       @Override
       publicStringtoString(){
          returnnull;
       }
    }
    classRhomboidextendsRTmp{
       //这里不报错
    }

    我只能说楼主的根据这个例子做出猜测,实在是没经过严格验证的.你为什么不试试其他名称的方法体呢?服了<divclass='ref'>

    引用来自“Cong_Cong”的评论

    LZ好深意:要知道Circle继承了Object,Object实现了toString().

    至于下面的抽象类Rhomboid是因为java是单继承,可没有直接父类实现toString().

    abstractclassShape2{
       publicabstractStringtoString();
    }
    classRTmpextendsShape2{
       @Override
       publicStringtoString(){
          returnnull;
       }
    }
    classRhomboidextendsRTmp{
       //这里不报错
    }

    这种问题...哭了很凑巧,LZ写的例子种,toString方法刚好是java.lang.Object中的,而这家伙是所有类的顶级父类,你换个名字就知道问题在哪了

    2020-06-14 17:04:49
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载