强制方法实现

时间:2015-05-18 23:33:06

标签: java inheritance override

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

Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:" + Uri.encode("example@gmail.com") +
        "?subject=" + Uri.encode("the subject") +
        "&body=" + Uri.encode("the body of the message");
Uri uri = Uri.parse(uriText);

send.setData(uri);

startActivity(Intent.createChooser(send, "Send Email..."))

提前致谢!

3 个答案:

答案 0 :(得分:3)

您可以通过两种方式执行此操作 - 使用interfaceabstract 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.
    }

}

编辑:此外,您只能在界面中使用抽象方法 - 而在抽象类中,方法可以包含正文。 API中通常使用抽象类。

答案 1 :(得分:0)

检查调用类的方法,如果调用类与父类相同,则抛出类似的异常

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");
    }

}

答案 2 :(得分:-1)

你可以将超类作为接口,以便子类必须为超类方法提供实现,因为接口默认情况下会出现抽象方法。

public interface SomeClass {

public abstract void aMethod();

}

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

}