美文网首页
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 实现接口和继承中的冲突问题

    下面这个例子摘自于《Thinking in Java》直接看下面这样的情况: 首先声明一个父类,ActionCha...

  • 多线程

    java中实现多线程操作有两种方法:继承Thread类和实现Runnable接口 一、继承Thread类 //继承...

  • kotlin的接口

    kotlin的接口和java的使用几乎一样Java是单继承多接口的语言,kotlin也是如此,java中是实现接口...

  • 接口与实现

    接口是比“abstract类”更抽象的类,在java中,类是单继承的,而接口可以实现多继承 接口包含接口声明和接口...

  • 接口

    在java中,类是单继承,多实现的 接口作用:拓展类的功能 格式: interface 接口名{ } 注意问题...

  • 线程实现的方法,sleep和wait的区别

    java提供继承Thread类和实现runnable接口这两种方式来实现线程Java中sleep和wait的区别:...

  • Java多线程

    Java中创建多线程有两种方式:继承Thread类和实现Runnable接口。 继承Thread类 Java的Th...

  • 看一眼就能学会的JS实现继承笔记

    前言 学习过 java 的同学应该都知道,常见的继承有接口继承和实现继承,接口继承只需要继承父类的方法签名,实现继...

  • 07 Java的继承与多态

    继承 Java继承的实现(只支持单继承,而不是多继承,称为接口的多实现)多个类中存在相同属性和行为时,将这些内容抽...

  • 实现和继承在JVM内存中的一些情况

    讲到实现和继承在内存中的区别,首先我们讲讲语法上他们的区别: Java只允许单继承却能实现多接口。 对于单继承,试...

网友评论

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

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