每次在每种语言中,当我覆盖一个类函数并在调用它“超级”函数之前处理指令时,我都觉得有些不对劲。
但我不知道是什么!这只是一种不好的感觉。
你们认为这是一种不好的做法吗?阅读我的代码的人会感到困惑吗?
为了让我的问题清楚,让我们举个例子。
考虑简单地向用户发送电子邮件的“SendEmail”类。
public class UserEmailSender {
public String sendTo;
public Boolean isDeveloper;
public void send(String emailBody){
System.out.println("let's send an email to"+sendTo);
}
}
现在我想覆盖这个类,以确保所有电子邮件都在我的公司内发送。
public class InCompanyEmailSender extends UserEmailSender{
@Override
public void send(String emailBody){
if(! sendTo.endsWith("@myCompany.com")){
sendTo = "me@myCompany.com";
}
super.send(emailBody);
}
}
在 InCompanyEmailSender 类中,我在调用“超级”发送函数之前检查/替换电子邮件地址。
因为这只是一个例子,我可能会做更多......