Kei*_*ith 0 java oop encapsulation
在开发我最近的项目时,我发现了一些破坏封装和可见性规则的东西,因为我理解它们.
在我的GUI类中,我为我的应用程序中的文本字段和按钮创建了几个类变量,并将它们全部设置为私有.我还为按钮和文本字段设置了getters,返回私有成员的值.在我的SqlStatements课程中,我引用getter,然后setText()在getter上调用方法,它会更改私有成员字段的值.这怎么可能?
例如:
public class InitGUI {
public static JTextField getfNameField() { <---- getter for JTextField
return fName;
}
private static JTextField fName; <---- JTextField variable.
}
public class SqlStatements {
// how is this able to change the value of a private member?
InitGUI.getmNameField().setText("");
}
Run Code Online (Sandbox Code Playgroud)
gyo*_*ham 11
你将不可变性与可见性混为一谈.通过为私有字段提供getter(打破封装),您可以将它的方法暴露给外部世界.(可能是一些改变字段内部状态的方法 - 以及你的类的结果).