我在一些遗留代码中发现了以下内容:
public class MyClass
{
private boolean myBool;
public boolean getMyBool()
{
return myBool;
}
public void otherMethod()
{
// some other calculations
boolean something = this.getMyBool();
// some other calculations
}
}
我在这里遗漏了什么吗?使用getMyBool()
而不是直接调用myBool
是否有优势?
因为在我看来,如果getMyBool()
的行为发生了变化,那么这个类在调用此方法时会背叛自己。
答案 0 :(得分:1)
其他类可以继承此类,并使用其他实现覆盖getMyBool()
另一个用例是您希望使用方面检测代码。要么改变getter行为,要么记录getter invokations ......
答案 1 :(得分:0)
这不是背叛。如果你使用这个类并在类外使用getter / setter,那么改变功能也不是背叛。
想象一下班级人物。此类具有年龄,您希望将值设置为小于零到零。您只需将setter和/或getter更改为适当的行为。
你真的不希望“有时”将它从零以下改为零。这就是原因,你应该在类中调用setter / getter。
答案 2 :(得分:0)
如果<? php
$con = mysqli_connect("XXX", "XXX", "XXX", "XXX");
mysqli_report(MYSQLI_REPORT_STRICT);
$name = $_POST["name"];
$collegename = $_POST["collegename"];
$batch = $_POST["batch"];
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "SELECT * FROM LoginList WHERE username = ? AND password =?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $name, $collegename, $batch, $username, $password);
$LoginList = array();
while (mysqli_stmt_fetch($statement)) {
$LoginList[name] = $name;
$LoginList[collegename] = $collegename;
$LoginList[batch] = $batch;
$LoginList[username] = $username;
$LoginList[password] = $password;
}
echo json_encode($user);
mysqli_stmt_close($statement);
mysqli_close($con);
?>
是一个纯粹的吸气者;也就是说,它只检索字段,然后对它进行方法调用没什么价值。吸气剂和磁场之间的行为没有变化。
如果它不是一个经常发生的纯粹的getter,那么方法调用是可以接受的。只使用getter就不会封装程序的全部意图。
答案 3 :(得分:-2)
如果您想在同一个班级中使用myBool;
,可以直接使用它。但是你不能在其他类中使用这个值,因为它的访问说明符是Private
。我们不能使用私有成员并将其继承到其他类中。但是您可以从getMyBool();
方法调用并获取相同的值。这是公共方法。我们可以在任何地方使用它。