当前位置: 首页 > 面试题库 >

与Java封装概念混淆

桓宜
2023-03-14
问题内容

美好的一天!

我正在阅读一本有关封装的Java书,其中提到了getter和setter方法。

我读过要隐藏属性,我必须将实例变量标记为 “ PRIVATE” ,并设置 “ PUBLIC” 方法getter and setter来访问数据。因此,我尝试制作类似但并非常规的代码,如下所示:

public class AddressBookEntry {

    private String name;
    private String address;
    private String telNo;
    private String email;

    public void getAllInfo() {
        name = JOptionPane.showInputDialog("Enter Name: ");
        address = JOptionPane.showInputDialog("Enter Address: ");
        telNo = JOptionPane.showInputDialog("Enter Tel. No: ");
        email = JOptionPane.showInputDialog("Enter Email Address: ");
    }
}

上面的代码是否因为我直接分配变量而公开了变量?我该如何做得更好?如果getter and setter改用常规方法并在另一个类上分配值会更好吗?“隐藏数据”是什么意思?

谢谢。


问题答案:

是的,没有。封装的要点是,它防止其他类需要知道您的类在幕后做什么。如果将您的文件存储name在其中String(如您在此处所做的那样),从文件中读取/写入文件或执行其他操作,那么封装的重点是对您的类的用户来说没关系,因为
他们 看到的只是String getName( )void setName (String name)

由于数据的修改完全在您的类的控制之下,因此不会破坏封装。如果 确实 存储name到文件,则可以在getAllInfo没有其他任何该类用户的情况下
进行 存储。由于从类 外部 可以观察到的行为仍然隐藏了类内部的工作,因此仍进行了封装。

也就是说,这是一种非常常规的方法。就像我在第一段中描述的那样,使用访问器方法(getter和setter)是一种更惯用的方法,对于使用您的代码的其他人来说更容易理解。您可以做您想做的事情,它不会破坏封装,但这不是我所说的优雅或典型。



 类似资料:
  • 封装的概念:如果我们可以间接改变私有变量的值(通过setters和getters),那么私有变量是如何安全的,它是如何隐藏的?有人能详细解释一下吗...

  • 在Java1.7之前,我很高兴地使用接口来实现OOPs概念封装。意思是如果我想对最终用户隐藏实现,那么我将只与他们共享接口,他们可以使用该接口调用我的API,例如EJB。 在Java1.7之前,上面的都是有效的,现在在Java8中,我可以用和关键字在接口中编写方法的实现,例如: 这在Java1.8中是完全有效的。 现在我的问题是: 顺便说一句,我读过Java文档,其中指出: 默认方法使您可以向库的

  • 密封类用来限制类的继承关系,这意味着密封类的子类数量是固定的。看起来就像是枚举那样,当你想在一个密封类的子类中寻找一个指定的类的时候,你可以事先知道所有的子类。不同之处在于枚举的实例是唯一的,而密封类可以有很多实例,它们可以有不同的状态。 我们可以实现,比如类似Scala中的Option类:这种类型可以防止null的使用,当对象包含一个值时返回Some类,当对象为空时则返回None: sealed

  • 英文原文:http://emberjs.com/guides/concepts/core-concepts/ 要开始学习Ember.js,首先要了解一些核心概念。 Ember.js的设计目标是能帮助广大开发者构建能与本地应用相颦美的大型Web应用。要实现这个目标需要新的工具和新的概念。我们花了很大的功夫从Cocoa、Smalltalk等本地应用框架引入了其优秀的理念。 然而,记住Web的特殊性非常

  • 主要内容:什么是输入/输出流,输入流,输出流在 Java 中所有数据都是使用流读写的。 流是一组有序的数据序列,将数据从一个地方带到另一个地方。 根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。 在学习输入和输出流之前,我们要明白为什么应用程序需要输入和输出流。例如,我们平时用的 Office 软件,对于 Word、Excel 和 PPT 文件,我们需要打开文件并读取这些文本,和编辑输入一些文本,这都需要利用输

  • PX4架构保证了核心控制器中不需要针对机身布局做特别处理。 混控指的是把输入指令(例如:遥控器打右转)分配到电机以及舵机的执行器(如电调或舵机PWM)指令。对于固定翼的副翼控制而言,每个副翼由一个舵机控制,那么混控的意义就是控制其中一个副翼抬起而另一个副翼落下。同样的,对多旋翼而言,俯仰操作需要改变所有电机的转速。 将混控逻辑从实际姿态控制器中分离出来可以大大提高复用性。 控制流程 一个特定的控制