A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Synaric 中级黑马   /  2015-9-30 09:01  /  726 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. interface I1{
  2.         void f();
  3. }

  4. interface I2{
  5.         int f(int i);
  6. }

  7. interface I3{
  8.         int f();
  9. }

  10. class C{
  11.         public int f(){
  12.                 return 1;
  13.         }
  14. }

  15. class C2 implements I1,I2{
  16.         public void f(){ }
  17.         public int f(int i){
  18.                 return 2;
  19.         }
  20. }

  21. class C3 extends C implements I2{
  22.         @Override
  23.         public int f(int i) {
  24.                 return 3;
  25.         }
  26.        
  27. }

  28. class C4 extends C implements I3{
  29.         public int f(){
  30.                 return 4;
  31.         }
  32. }

  33. //The return types are incompatible for the inherited methods I1.f(), C.f()
  34. //class C5 extends C implements I1{        }

  35. //The return types are incompatible for the inherited methods I1.f(), I3.f()
  36. //interface I4 extends I1, I3{ }
复制代码
就结果而言,子类会从继承和实现的方法中取得一个交集,交集中必须避免“方法签名相同但返回值不同”的情况。

5 个回复

倒序浏览
不错,学习了。。。。
回复 使用道具 举报
只求不悔 来自手机 中级黑马 2015-9-30 09:46:13
藤椅
继承中如果有很多方法重复了,就要一直复写的话,会不会有问题
回复 使用道具 举报
只求不悔 发表于 2015-9-30 09:46
继承中如果有很多方法重复了,就要一直复写的话,会不会有问题

不会,同方法签名、同返回类型的方法只需要写一次,若出现同方法签名、不同返回类型直接报错
回复 使用道具 举报
讲错了并集……
回复 使用道具 举报
好的   谢谢了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马