何度も私はクラスの公共のプロパティは大きな偽物だと読んだことがありますが、データの変換/変換が行われない理由はわかりません。私は公共施設の実際の生活の例が悪い
public class Employee
{
public String firstName;
public String lastName;
private int ssn = 0;
public boolean setSsn(String s)
{
//makes perfect sense why something like an ssn would use a getter setter
//some code to validate ssn
if(!validSsn(s)){
ssn = 0;
return false;
}
ssn = raw;
return true;
}
public String getSsn()
{
return ssn;
}
private boolean validSsn(String s)
{
//validation goes here
retrun val;
}
//I don't understand why I should make firstName private
// and then write
public void setFirstName(String s)
{
firstName = s;
}
public String getFirstName(String s)
{
return firstName;
}
}
を書き何かの
の例では、なぜ、「他の人があなたのコードを使用するときに問題が発生するため、」これが問題を引き起こし、具体的に説明してください、ではないでしょうシナリオを提供してください?なぜそれは問題を引き起こすのですか?事前に建設的な批判と詳細な回答をお寄せいただきありがとうございます。D
firstNameが設定されたときにエラーをチェックするにはどうすればよいですか?または、設定後にロックします。あなたはその設定方法にそのロジックを持たないので、あなたの例では必要ないでしょうが、場合によってはそのロジックが必要かもしれません。 –
'employee.firstName =" \ n ";' –
パブリックプロパティが悪いのではなく、public ***フィールド***はカプセル化を中断し、クラスの知識なしにデータを変更できるようにします。フィールドの値を気にしなければ、大したことではありません。しかし、あなたがそこにいることに頼っている、あるいは他の方法で一定の価値を持っているのであれば、フィールドでそれを強制する方法はありません。 – dbugger