有没有什么方法可以强制一个类扩展一个具体的类来实现一个超类' 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..."))
提前致谢!
答案 0 :(得分:3)
您可以通过两种方式执行此操作 - 使用interface
或abstract 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
}
}