Tag: oop

inheritance:从子类访问基类字段

子类对象如何引用超类? 例如: public class ParentClass { public ParentClass() {} // No-arg constructor. protected String strField; private int intField; private byte byteField; } public class ChildClass extends ParentClass{ // It should have the parent fields. } 这里调用ChildClass构造函数时,会创建一个ParentClass类型的对象,对吧? ChildClass从ParentClass对象inheritancestrField ,因此它( ChildClass对象)应该以某种方式访问ParentClass对象,但是如何?

如果你没有用Java克隆那么你做了什么以及你称之为什么?

有没有人在Java中有任何建议或建立的最佳实践和复制构造函数/工厂方法等的命名约定? 特别是,假设我有一个类Thing ,我想要一个方法,返回一个新的Thing ,其值与传入的Thing相同(或者作为实例,如果它是一个实例方法)。 你有这个作为构造函数或静态工厂方法或实例方法? 你会怎么称呼它? 根据标题,我想避免使用clone()和Cloneable 。

如何在将数据发送到另一个应用程序时实施重试策略?

我正在处理我的应用程序,它将数据发送到zeromq 。 以下是我的应用程序: 我有一个SendToZeroMQ类, SendToZeroMQ数据发送到zeromq。 将相同的数据添加到同一个类中的retryQueue ,以便以后可以在未收到确认的情况下重试。 它使用带有maximumSize限制的guava缓存。 有一个单独的线程从zeromq接收先前发送的数据的确认,如果没有收到确认,则SendToZeroMQ将重试发送相同的数据。 如果收到确认,那么我们将从retryQueue删除它,以便不能再次重试。 想法非常简单,我必须确保我的重试策略正常工作,这样我就不会丢失数据。 这是非常罕见的,但如果我们没有收到acknolwedgements。 我正在考虑构建两种类型的RetryPolicies但我无法理解如何在这里构建与我的程序相对应的: RetryNTimes:在此期间,它将在每次重试之间以特定睡眠重试N次,之后,它将删除记录。 ExponentialBackoffRetry:在此它将指数级地继续重试。 我们可以设置一些最大重试限制,然后它将不会重试并将丢弃记录。 下面是我的SendToZeroMQ类,它将数据发送到zeromq,也从后台线程每30秒重试一次,并启动可持续运行的ResponsePoller runnable: public class SendToZeroMQ { private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(5); private final Cache retryQueue = CacheBuilder .newBuilder() .maximumSize(10000000) .concurrencyLevel(200) .removalListener( RemovalListeners.asynchronous(new CustomListener(), executorService)).build(); private static class Holder { private static final SendToZeroMQ INSTANCE = new SendToZeroMQ(); } […]

类“属性”与“成员”与“变量”与“字段”的术语

当引用存储在类实例中的一段数据时,开发人员似乎经常互换使用这些术语。 每个术语之间是否有任何技术差异,或者可以互换使用它们吗?

引入OO项目的好问题领域?

我正在与那些希望在经过几年的IT支持工作后重新开始编程的人合作。 他们了解所有迭代编程基础并经常使用它们,但他们唯一的面向对象编程经验是在大学里。 目标是提出一个体面大小的项目,有助于说明和实践OO概念。 有没有人曾经使用或想过一个好的问题域来介绍OO? 我正在寻找一个域,其中inheritance,抽象和多态等概念确实有意义,并在使用类建模时提供优势。 当然,我做了一些谷歌搜索,并找到了流行的ATM和地址簿OO的例子 。 它们都很不错,但ATM比我想要的要复杂一些。 地址簿可能不错,但我认为它可能不够复杂,或者没有足够清晰的对象建模域。 目标是项目需要花费相当多的精力来完成,而不是可以在一两个下午完成的事情。 至于实现细节,该项目将实现为具有最小UI的Java控制台应用程序。 学习OO概念以及如何在Java中实现它们是此应用程序的主要目的。

许多类引用数据库连接类的最佳方法

我很快将开始我的课程开发阶段,目前的设计是有一个处理数据库连接的类和许多调用它的类; 数据库类应该打开连接并盲目地传递查询,其他类负责这些查询的内容。 我想知道的是这些参考知道数据库类的最佳方法是什么? 我的直觉是使Database类中的方法静态并将它们称为Database.method()但是有更好的方法吗? PS为此引用了正确的词? 如果不是什么是正确的词,那么下次我有类似的问题会有所帮助。

困惑:抽象和封装是一样的吗?

可能重复: 抽象VS信息隐藏VS封装 “抽象”和“封装”的定义看起来与我非常相似。 我总是混淆这些条款。 请通过展示示例来澄清差异。

Java和PHP中的这个关键字

今天我开始研究一个小型Java应用程序。 我有一些PHP OOP的经验,大多数原则是一样的。 虽然我认为,它应该适用于两种方式。 但是,例如关键字,我的理解使用的方式不同。 在Java中 class Params { public int x; public int y; public Params( int x, int y ) { this.x = x; this.y = y; } public void display() { System.out.println( “x = ” + x ); System.out.println( “y = ” + y ); } } public class Main { public […]

使用Switch,减少圈复杂度java

在使用java时我遇到了一个奇怪的情况,让我们先从代码开始。 public static String constructMessage(final String reason, final String xId, final String yId, final IonStruct metadataStruct) throws DataSanityException { String message = “”; switch (reason) { case “NOT_ACTIVE”: if (xId != null) { message = String.format(“Y %s X %s not active: status is inactive%n”, yId, xId); } else { message = String.format(“Y %s not active: […]

java:inheritance

inheritance有哪些替代方案?