强制方法实现

force method implementation

有什么方法可以强制 class 扩展具体 class 以实现 Java 中的超级 class' 方法之一?我想要的是这样的:

class SomeClass {
    /* modifiers */ aMethod(){
         /* an implementation */
    }
}

class SubClass extends SomeClass {
   /* if I don't reimplement aMethod() here, I get a compiler error */
}

提前致谢!

您可以通过两种方式做到这一点 - 使用 interfaceabstract class

下面是两者的示例。

摘要Class:

public abstract class SomeClass {

    public abstract void aMethod();

}


public class SubClass extends SomeClass {

    @Override
    public void aMethod() {
        // An error would occur if aMethod isn't here.
    }

}

接口:

public interface SomeClass { // You'd probably want to name it something different

    public abstract void aMethod();

}


public class SubClass extends SomeClass {

    @Override
    public void aMethod() {
        // An error would occur if aMethod isn't here.
    }

}

编辑: 此外,接口中只能有抽象方法——而在抽象 class 中,方法可以有主体。抽象 class 通常用于 API。

检查 class 被调用的方法,如果调用 class 与父 class 相同,则抛出这样的异常

public class SomeClass {

    public void method() throws NoSuchMethodException, Exception {
        System.out.println("override me");
        if(SomeClass.class.getMethod("method", null).getDeclaringClass().equals(SomeClass.class)) {
            throw new Exception("Not Overriden");
        }
    }

}

public class SubClass extends SomeClass {

    public SubClass() {

    }

    @Override
    public void method() {
        System.out.println("hiii");
    }

}

你可以将 super class 作为接口,这样 subclass 必须提供 super class 方法的实现,因为接口中存在的方法默认是抽象的。

public interface SomeClass {

public abstract void aMethod();

}

public class SubClass implements SomeClass {
   public void aMethod() {
    // provide implementation or it will give error
}

}