我如何保证实现接口的 class 也扩展了 class?

How can I guarantee that a class that implements an interface also extends a class?

我有这个代码:

public class Animate {} // external api <--------------

public class Cat extends Animate {} // written by me

public interface Walks {} // also written by me

如果有东西在行走,我该如何强制要求它必须是有生命的?

抽象 class 可以扩展 class,这是它可能有用的罕见情况之一。

abstract class AnimatedAbstractWalker extends Animate {

    // class gets concrete methods from Animate

    // and any abstract walk methods you want to add
    // (this replaces the Walk interface)
}

class Cat extends AnimatedAbstractWalker {
    // inherits standard animation implementation
    // you must implement walking like a cat
}

class Dog extends AnimatedAbstractWalker {
    // inherits standard animation implementation
    // you must implement walking like a dog
}

制作一个扩展 Animate 的 class,没有额外的方法并实现 Walks(它与 Animate 相同,但它是你的)

public class MyAnimate extends Animate implements Walks{} // your own Animate

public class Cat extends MyAnimate {}

你不能。

接口只是定义了一个 API,并不强制实施。

如果您希望某些东西既实现接口又扩展实现,只需创建一个抽象基础 class 来实现两者并从那里扩展:

public class WalkingAnimate extends Animate implements Walks {
    public abstract ... // abstracts methods from Walks 
}

public class Cat extends WalkingAnimate {
   ...
}

因为 class Animate 是外部的你不能改变它,但是你可以在你的代码中 subclass 它:

public abstract class AnimatedWalk extends Animate implements Walk {}  

因此,从您新创建的 AnimatedWalk 继承的每个 class 都是 Animate 并且必须实现 Walk

public class Cat extends AnimatedWalk { ... }