将 gui 组件声明为私有是否算作封装?

问题描述

private JPanel contentPane;
private JTextField textField;

然后我在文本字段中使用了 getter

st.setString(1,textField.getText());

是否可以将 gui 组件(文本字段)声明为私有称为封装?

解决方法

是的,它算作封装。通过将 JTextField textField 字段声明为 private,您可以防止从类外部直接访问它。其他类不知道 textField 字段或它是一个 JTextField 对象。他们不能依赖于现有的领域等;即没有耦合。他们不能直接读取或写入字段;即封装。

包含 textField.getText() 调用的代码必须是此类的一部分。据推测,这是类公共 API 实现的一部分。最坏的情况是封装的部分放松,以允许调用者看到文本。充其量只是 API 的一部分。

封装并不意味着“没有信息出来”。 (那是没用的!)这意味着访问被限制(通过设计)到必要的,并且(在适当的时候)由封装方法介导。这样可以更轻松地理解代码以及各个部分的交互方式,尤其是在代码库非常广泛的情况下。