Tag: abstract class

Java中抽象类的目的是什么?

我对抽象类及其用法有一些疑问。 我知道他们的基本知识; 例如,他们无法实例化,他们可以采用具体和抽象的方法,……但我想我想知道的是, 他们在生活中服务的目的是什么(在软件工程中)? Java中抽象类的目的是什么? 为什么以及何时应该使用Abstract类? 如果你可以使用普通类然后inheritance它,为什么要inheritance一个抽象类? 如何使用抽象类让我们的生活更轻松? 它会提供更好的可维护性吗? 更灵活? … 顺便说一句,我已经看过一些类似的问题和答案,包括理解Java中抽象类的目的 ,但它们没有回答我的问题。 我更倾向于寻找能够揭示Java中引入抽象类背后的哲学的答案。 谢谢

为什么实例字段的值为空?

我有这段简单的代码。 abstract class X { X() { read(); } private void read() { Object obj = new Object(); readValue(obj); } protected abstract void readValue(Object obj); } class Y extends X { Object obj = null; Y() { super(); } @Override protected void readValue(Object obj) { this.obj = obj; } void printer() { System.out.println(“Object = ” […]

构造函数在抽象类中有什么用?

既然我们无法实例化抽象类,那么在抽象类中使用构造函数的必要性是什么?

如何使用非抽象类实现ActionListener? Java的

我刚刚开始学习如何使用swing,并且一直在关注我在网上找到的教程。 我基本上按照“逐字逐句”的教程,但我得到错误: ScoreBoard不是抽象的,并且不会覆盖ActionListener中的抽象方法actionPerformed(ActionEvent) 所以我的问题是,如果类不是抽象的,我如何将ActionListener实现到我的类(ScoreBoard)中? 这是整个代码:(因为我不知道问题出在哪里) package scoreboard; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class ScoreBoard implements ActionListener{ //Class Variables int redScore = 0; int blueScore = 0; //Class Objects JPanel titlePanel, scorePanel, buttonPanel; JLabel redLabel, blueLabel, redLabelT, blueLabelT; JButton redButton, blueButton, resetButton; public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable(){ public void […]

C ++:使用抽象方法创建抽象类并覆盖子类中的方法

如何在C ++中创建一个抽象类,其中包含一些我想在子类中重写的抽象方法? .h文件应该怎么样? 是否有.cpp ,如果是这样,它应该怎么样? 在Java中,它看起来像这样: abstract class GameObject { public abstract void update(); public abstract void paint(Graphics g); } class Player extends GameObject { @Override public void update() { // … } @Override public void paint(Graphics g) { // … } } // In my game loop: List objects = new ArrayList(); for (int […]

Java 8:虚拟扩展方法与抽象类

我正在研究Java 8接口中的新虚拟扩展方法: public interface MyInterface { default String myMethod() { return “myImplementation”; } } 我的目的是允许接口随着时间的推移而发展,以及多重inheritance位,但它们看起来非常类似于我的抽象类。 如果你正在做新工作,那么抽象类优先于扩展方法来为“接口”提供实现,还是这两种方法在概念上是等价的?

Java抽象类和接口

在采访中我被问到以下问题。 我试着回答这个问题,但我想要问题的确切答案。 如果我可以将Abstract类模拟为Interface,为什么java提供了Interface? 这意味着如果在Abstract类中我可以将所有方法标记为抽象,然后抽象类将作为接口工作,那么为什么我需要接口。 任何人都可以简要解释一下。

Java中的接口和抽象类混淆与示例

我无法理解何时使用接口而不是抽象类,反之亦然。 此外,我很困惑何时扩展与另一个接口的接口。 对于长篇文章感到抱歉,但这非常令人困惑。 创建形状似乎是一个受欢迎的起点。 假设我们想要一种模拟2D形状的方法。 我们知道每个形状都有一个区域。 以下两个实现之间有什么区别: 带接口: public interface Shape { public double area(); } public class Square implements Shape{ private int length = 5; public Square(){…} public double area() return length * length; } } 与抽象类: abstract class Shape { abstract public double area(); } public class Square extends Shape { private length […]

为什么我们不能在JAVA中实例化一个抽象类?

我明白: 由于抽象类本身没有任何东西,即车辆,这就是为什么我们要创建一个具体实现的对象,如汽车,自行车等。 在对象链接期间调用Abstract类的构造函数。 我们永远不能直接创建Abstract类的对象,即使它包含一个Constructor并且所有方法都已实现 为什么? 我希望从编译器的角度理解为什么Java会强制这些? 谢谢

为什么Java类既不是抽象的也不是最终的

假设我有一个只包含静态方法和变量的实用程序类。 例如: public abstract final class StringUtils { public static final String NEW_LINE = System.getProperty(“line.separator”); public static boolean isNotNullOrSpace(final String string) { return !(string == null || string.length() < 1 || string.trim().length() < 1); } } 在这种情况下,使类既抽象又最终是有意义的。 摘要因为制作这个类的对象没有用,因为所有方法都可以静态访问。 最后因为派生类不能从该类inheritance任何内容,因为它没有任何非静态成员。 C#允许这些类的静态修饰符。 为什么Java不支持这个?