美文网首页
Java 实现接口和继承中的冲突问题

Java 实现接口和继承中的冲突问题

作者: kolibreath | 来源:发表于2020-02-24 10:31 被阅读0次

    下面这个例子摘自于《Thinking in Java》
    直接看下面这样的情况:

    首先声明一个父类,ActionCharacter 其中有一个方法称之为fight

    public class ActionCharacter {
    
        void fight(){}
    }
    
    

    同时,存在另外一个接口叫做CanFight 其中存在一个方法也是fight()

    public interface CanFight {
    
        void fight();
    }
    
    

    使用类Hero去extends 和 implement 他们:

    public class Hero  extends ActionCharacter implements CanFight{
    }
    
    

    在《Thinking in Java 》第四版中


    截屏2020-02-2410.24.13.png

    这个Hero没有实现fight方法,书上给与的解释是:

    截屏2020-02-2410.25.16.png
    但是这样的说法在我使用Java8 尝试之后感觉明显是错误的, Hero 必须要实现fight()这个方法是从Canfight接口中过来的,仍然可以使用super.fight()调用父类的方法
    public class Hero  extends ActionCharacter implements CanFight{
    
        @Override
        public void fight() {
            super.fight();
        }
    }
    
    

    上面这样的情况是因为父类和接口中都是用了同样的方法签名,通过方法的重写和继承,这样的两个方法得到了区分。

    但是如果是这样的情况会造成错误:


    将父类中的方法返回值改成int,子类重写的时候就会不清楚重写的方法的具体所指:

    截屏2020-02-2410.30.09.png

    最近在复习Java 有感随记

    相关文章

      网友评论

          本文标题:Java 实现接口和继承中的冲突问题

          本文链接:https://www.haomeiwen.com/subject/ghrmqhtx.html