При разработке моего последнего проекта я обнаружил что-то, что нарушает правила инкапсуляции и видимости, когда я их понимаю.Изменение членов частного поля без использования сеттера
В моем классе GUI я создал несколько переменных класса для текстовых полей и кнопок в приложении и установил, что все они являются частными. Я также установил getters для кнопок и текстовых полей, которые возвращают значения частных членов. В моем классе SqlStatements
я ссылаюсь на геттеры, а затем вызываю метод setText()
на геттерах и изменяет значение полей частного члена. Как это возможно?
Например:
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("");
}
Возможно ли это? – PSR
, предоставляющий доступ к закрытому члену с помощью метода, не сохраняет его закрытым. Если это имеет смысл. – Breavyn
Я думал, что за пределами использования геттера и или сеттера в частном члене его нельзя трогать извне класса. – Keith