在java中多次重写布尔返回函数是最佳做法吗;公共布尔方法F1();
重写布尔返回方法是一种好的做法,它的主体在类A中,可以在子类B和C中重写,以便根据类B、C进行更多的更改 语言是Java,Android 请对此提出建议在java中多次重写布尔返回函数是最佳做法吗;公共布尔方法F1();,java,android,Java,Android,重写布尔返回方法是一种好的做法,它的主体在类A中,可以在子类B和C中重写,以便根据类B、C进行更多的更改 语言是Java,Android 请对此提出建议 class A { public boolean check(String arg1,String arg2){ /* * Some code is here. * */ return true; } } class B extends A{ @Ov
class A {
public boolean check(String arg1,String arg2){
/*
* Some code is here.
* */
return true;
}
}
class B extends A{
@Override
public boolean check(String arg1, String arg2) {
super.check(arg1, arg2);
/*
* Made come code change according to class B
* */
return true;
}
}
class C extends A{
@Override
public boolean check(String arg1, String arg2) {
super.check(arg1, arg2);
/*
* Made come code change according to class C
* */
return true;
}
}
我最后的评论“是一个答案。”
C类
的一个非常常见的场景可能如下所示:
if (super.check(arg1, arg2)) {
... do something ... test something
... return True or False ...
}
else return false; // "what the parent said..."
每个子类中的
check()
方法首先调用其父类的版本。如果该方法返回false
,那么(比如…)子对象也会返回。但是如果父母返回true
,那么(比如…)孩子会做更多的事情,自己决定返回什么。因此,我们可以说,孩子详细阐述了父母所做的事情。“所有这些方法都执行基本检查,但子方法做得更多。”如果您希望方法的行为与其父方法不同,可以覆盖这些方法,但调用super
并不总是必要的,这取决于您是否要扩展或更改该行为
考虑以下类,其中我们检查两个参数的长度是否小于5:
public class Checker {
public boolean check(String arg1, String arg2) {
return arg1.length() < 5 && arg2.length() < 5;
}
}
或者您可以将行为更改为仅检查两个参数是否都以“Bop”开头,您可以这样做,忽略父级的check()方法:
check
方法是否总是返回true?如果是,为什么它会返回任何东西?它可能有一个无效的返回类型。我不明白。你是否在问如果你有不同的逻辑,你是否应该重写这个方法?对这就是重点。如果每个类的检查都有自己的逻辑,那么重写该方法是可以的。但是在每个子类中调用super.check(arg1,arg2)是错误的。我真的不理解这个问题。“如果一个函数需要返回一些东西,就这样吧。”当调用check()
方法时,这三个函数中的一个将成为所调用的函数。“每个人都应该做正确的事情。”不管怎样,这里都没有“最佳实践”的问题,IMHO。@MarcosEchagüe同意。除非在super.check
中执行某种CRUD操作,例如修改数据库中的某些内容,否则如果结果被丢弃,调用super
是没有意义的。
class StartWithBapChecker extends Checker {
@Override
public boolean check(String arg1, String arg2) {
boolean correctLength = super.check(arg1, arg2);
return correctLength &&
arg1.startsWith("Bap") &&
arg2.startsWith("Bap");
}
}
class StartWithBopChecker extends Checker {
@Override
public boolean check(String arg1, String arg2) {
return arg1.startsWith("Bop") &&
arg2.startsWith("Bop");
}
}