Tag: oop

创建支持实习的对象的良好模式?

我需要一个支持实习的类,比如Java的String类。 在创建Class的实例时,如果已存在具有相同参数的引用,则应返回预先存在的引用。 否则它应该返回一个新的引用。 这样: Foo a = new Foo(5); Foo b = new Foo(5); Foo c = new Foo(6); a == b a != c 1)维护预先存在的对象表是工厂的工作,还是表通常只是类本身内的静态变量? 2)预先存在的物体表是什么? 它是每次请求实例时搜索的一组对象,还是一个Map,其中键是对象,值是参数?

为什么我不能从Java中另一个包中的inheritance类调用受保护的方法?

假设有以下基类: package bg.svetlin.ui.controls; public abstract class Control { protected int getHeight() { //.. } //… } 此外,在同一个包中,有一个inheritance的类: package bg.svetlin.ui.controls; public abstract class LayoutControl extends Control { public abstract void addControl(Control control); //… } 然后,在另一个包中有第三个类: package bg.svetlin.ui.controls.screen; public abstract class Screen extends LayoutControl { //… } 最后,还有一个实现类,在另一个包中: package bg.svetlin.ui.controls.screen.list; public class List extends Screen { private […]

空抽象类的用途是什么?

我想知道Java中有没有使用空抽象类? 如果是这样,它是什么?

从接口实现方法但具有不同的参数

我正在寻找一种很好的方法来获得在接口中定义但具有不同参数类型的相同方法的不同实现。 这可能吗? 为了澄清这一点,假设我有一个接口数据库和两个实现类Database1和Database2。 数据库有一个方法createNode(…)和另一个modifyNode(…)。 问题是对于Database1,createNode方法的返回类型应该是long(标识符)。 但是,对于Database2,它将是一个特定于该技术的对象(在这种情况下为OrientDB,但这并不重要,当然,它只是扩展Object的东西)。 并且两个create(…)返回类型都应该用作modifyNode(…)参数之一。 我想要做的是: `public interface Database { public Object createNode(…); public void modifyNode(Object id, …); … }` public class Database1 { @Override public Object createNode(…) { … long result = // obtain id of created node return Long.valueOf(result); } @Override public void modifyNode(Object id, …) { … // use id […]

访问外层此实例

我们如何访问外部类这个实例:例如in Class A { Class B { this.helloB(); (A’s this).hello() } } 我们如何在Java中访问A的这个实例

JavaFX按钮不是先响应第二次点击

我试图在JavaFX中创建我的第一个应用程序,我有一个问题,调用一个方法的Button(例如打开另一个窗口) – 我总是要点击它两次才能触发操作。 这是我在Controller中的代码: import javafx.fxml.FXML; import javafx.scene.control.Button; public class ControllerSignIn { @FXML private Button forgot; @FXML private Button back; @FXML private Button signin; public void forgetPasswordClicked() { forgot.setOnAction(e -> ForgotPassword.setUpWindow()); //works on 2nd click } public void backClicked() { back.setOnAction(e -> ForgotPassword.closeWindow()); //works on 2nd click } public void signInClicked() { System.out.println(“Sign In CLICKED”); […]

考虑到对象封装,getter应该返回一个不可变属性吗?

当getter返回一个属性时,例如返回其他相关对象的List ,该列表和它的对象是否应该是不可变的以防止类之外的代码,更改这些对象的状态,而主要的父对象不知道? 例如,如果一个Contact对象有一个getDetails getter,它返回一个ContactDetails对象List ,那么调用该getter的任何代码: 可以从该列表中删除ContactDetail对象,而不知道Contact对象。 可以更改每个ContactDetail对象,而不知道Contact对象。 那我们该怎么做呢? 我们应该只是信任调用代码并返回容易变化的对象,还是努力工作并为每个可变类创建一个不可变类?

php中的访问修饰符有什么区别?

我完全混淆了php中的访问修饰符。 关于访问修饰符的内存利用率或仅可访问性的差异是否有任何区别。请建议。 如果我有以下代码: public Class Employee { public $emp_name=’xyz’; protected $emp_phone=’1234567891′; private $emp_code=’101′; public function getName($name) { return ‘Employee name is :’ . $name; } protected function getPhone($ph) { return ‘Employee contact number is :’ . $ph; } private function getCode($id) { return ‘Employee code is :’ . $id; } $emp = new Employee(); $emp->getName($emp_name); […]

封装和吸气剂

我正在读这篇关于为什么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 ?

处理谐音inheritance方法的规则是什么?

我试图理解Java如何处理在具体类inheritance(抽象或具体)具有来自不同类/接口的相同名称的方法时出现的歧义情况。 我无法找到一般规则,这就是为什么我一劳永逸地决定用一种实用的方法来花一些时间。 我考虑了8种不同的情况 抽象方法 非抽象方法 抽象类 接口 导致这个计划: +————————-+ | INTERFACE | +———-+————–| | abstract | non-abstract | | method | method | +———–+————–+———-+————–+ | | abstract | | | | ABSTRACT | method | 1a | 2a | | +————–+———-+————–+ | CLASS | non-abstract | | | | | method | 3a | 4a […]