Tag: 封装

与Java Encapsulation Concept混淆

美好的一天! 我正在阅读一本关于封装的Java书,它提到了getter和setter方法。 我已经读过要隐藏属性,我必须将我的实例变量标记为“PRIVATE” ,并使用getter and setter的“PUBLIC”方法来访问数据。 所以我尝试制作类似但不是传统的代码,如下所示: 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 […]

GUI中监听器的嵌套类的优点

对于体积适中的项目,我被告知当你有扩展JPanels的类时,最好的做法是使用嵌套类来实现监听器。 例如,我可以有一个扩展JPanel的类FactoryScreen,并有一个嵌套类FactoryScreenBrain,它实现了所有必要的监听器。 我从来没有能够以这种方式为我的类封装特定的好处或缺点得到一个很好的解释,直到现在总是只有扩展JPanel和实现监听器的类。 有人能为我提供一些指导吗?

在java中使用getter方法向List添加元素是不好的做法?

假设我在类中有一个private ArrayList或LinkedList ,我永远不会为它分配新的引用,换句话说,这将永远不会发生: myLinkedList = anotherLinkedList; 这样我就不需要使用setMyLinkedList(anotherLinkedList) 。 但! 我需要添加元素,或从中删除元素。 我应该只编写一种新的setter ,执行adding而不是setting的任务,比如myLinkedList.add(someElement) ? 或者可以通过使用getter来执行此操作,而不必违反Encapsulation主体? getMyLinkedList().add(someElement) (+假设如果我不服从封装,我将失去我的标记: – “)

封装和吸气剂

我正在读这篇关于为什么getter和setters是邪恶的文章。 文章并没有说永远不会使用它们,但是,它告诉你以限制这些方法的使用的方式思考,或引用文章: 不要求您提供完成工作所需的信息; 请询问有信息的对象为您完成工作。 当您需要在GUI中显示数据但没有getter方法时会发生什么? 本文简要介绍了这一点,但并未完全涵盖。 它提到将JComponent传递给类,但是如果你进行GUI更改,可能会导致很多工作需要修复。 举个例子,你有一个Book类(限制这个例子以保持它的可读性)。 public final class Book { private String title; //Authors is class with the attributes authorFirstname, authorLastname private List listofAuthors; public Book(String title, List listofAuthors) { //initialization } //other methods that do work } 如果我有一个具有JTextField以显示书名的GUI和一个显示作者列表的JTable ,我将如何编写我的方法来为我“完成工作”并显示结果? 这是否需要getter ?

如何在Java中封装数组

我从Java开始,我正在学习setter,getters和encapsulation。 我有一个非常简单的程序,两个类: Container有一个带有setter和getter的私有int数组( numArray )。 Main创建一个Container对象并在totalArray方法中使用它。 public class Container { private int numArray[]= {0,0,0}; public int[] getNumArray() { return numArray; } public void setNumArray(int index, int value){ numArray[index] = value; } } public class Main { public static void main(String[] args) { Container conte = new Container(); System.out.println(totalArray(conte.getNumArray())); conte.getNumArray()[2]++; System.out.println(totalArray(conte.getNumArray())); } private static int totalArray […]

为什么要声明getter和setter方法是私有的?

我看到了一个代码,其中getter和setter方法被声明为private。 我试图找出它背后的逻辑,我真的很难理解为什么你会将它们声明为私有? 这与我们试图通过getter和setter实现的完全相反。

封装与信息隐藏

Ecapsulation和Information Hiding之间究竟有什么区别? 我知道将字段设为私有然后制作字段的setter和getter是ecapsulation.However封装意味着这个? 假设我有一个如下所述的课程。 public Class IsThisEncapsulation { public int age; public void setAge(int age) { this.age=age; } public int getAge() { return age; } } 现在是IsThisEncapsulation类是Encapsulation的一个例子吗? 现在是否会使上述class级中的“年龄”字段实现信息隐藏? 能否请您给我一些明确的例子,以帮助我清楚地区分这些概念?

包装和知名度

我正在制作SDK,我正在尝试将类分离到不同的包,这些类使用其他一些共享类。 问题是如果我公开共享类,每个人都能看到它们,而不仅仅是我的类。 什么是使它们只能由我的应用程序访问的正确方法? 示例: 打包MyClass1 包装b MyClass2 包c公共MySharedClass 因为c是公共的MySharedClass将能够访问它,但问题是它也将对世界可见,我怎么能阻止它呢?

对象是否封装数据,以便即使是同一类的其他实例也无法访问数据?

在Java中 对象是否封装数据,以便即使是同一类的其他实例也无法访问数据? 只有在使用关键字“private”时? 什么是Java中的“访问器方法” – 像getName()这样的方法? 谢谢

什么是封装?

我有两个封装定义,不能适合一个定义。 封装是数据隐藏。 通过使用private , protected和public ,将数据打包到单个组件中。 无论发生什么变化都包含在内。 保护任何易于改变的东西。 这两个定义如何讨论相同的概念?