Tag: 抽象类

使用Gson和抽象类

我正在尝试使用GSON在客户端和服务器之间交换消息。 问题如下: 我有这个结构: public class Message { private TypeOfContent type; // It’s a enum private Content content; …. } 然后,对象内容可以是各种类的类。 我在这里和这里找到了2个教程,但没有一个能解决问题。 EDIT1: 消息类是这样的: public class Mensagem { private TipoMensagem type; private Conteudo conteudo; private Cliente autor; private Cliente destino; // null -> to all(broadcast) } 内容就是这个: public class Conteudo { protected TipoConteudo typeConteudo; protected String […]

使用没有任何抽象方法的抽象类

抽象类不需要包含任何抽象方法。 除了抽象类无法实例化这一事实之外,还有其他原因使类抽象化吗?

从抽象类inheritance静态变量

我有六个类,它们都扩展了相同的抽象类。 抽象类有一个静态变量,指向一些JNI代码,我只想在每个类的实例化时加载一次。 根据我的理解,这导致实例化这个静态变量的一个实例,但我想要的是每个扩展类都有自己的变量的静态实例,该实例对于给定的子类是唯一的。 我想在我的抽象类中编写一些代码来修改和/或释放抽象类。 是否有可能同时做这两件事? 因此,作为一个例子,我可以编写一个带有变量foo的抽象类栏和一个打印foo内容的printFoo方法。 然后我按顺序实例化fooBar1,fooBar2和fooBar3,每个扩展bar类并将foo初始化为静态块中的不同值。 如果我调用foobar1.printFoo我想打印由fooBar1构造函数初始化的foo的静态值。 这可以在java中完成吗?

Java克隆抽象对象

我想知道是否有任何方法可以做到以下几点。 我有一个抽象类, Shape ,以及它的所有不同的子类,我想重写克隆方法。 我想在方法中做的就是从当前的toString()创建一个新的Shape 。 显然我不能做以下因为Shape是抽象的。 还有另一种方法可以做到这一点,因为在每个子类中重写克隆只是为了简单的名称更改似乎没用。 public abstract class Shape { public Shape(String str) { // Create object from string representation } public Shape clone() { // Need new way to do this return new Shape(this.toString()); } public String toString() { // Correctly overriden toString() } }

如何在Java中实现抽象的单例类?

这是我的示例抽象单例类: public abstract class A { protected static A instance; public static A getInstance() { return instance; } //…rest of my abstract methods… } 以下是具体实施: public class B extends A { private B() { } static { instance = new B(); } //…implementations of my abstract methods… } 不幸的是我无法在B类中获取静态代码来执行,因此实例变量永远不会被设置。 我试过这个: Class c = B.class; A.getInstance() […]

使用抽象方法有什么意义?

使用“抽象方法”有什么意义? 抽象类无法实例化,但抽象方法呢? 他们只是在这里说“你必须实现我”,如果我们忘记它们,编译器会抛出错误吗? 这是否意味着别的什么? 我还读到了一些关于“我们不必重写相同代码”的内容,但在抽象类中,我们只“声明”抽象方法,因此我们必须重写子类中的代码。 你能帮我理解一下吗? 我检查了关于“抽象类/方法”的其他主题,但我没有找到答案。

类不是抽象的,也不会覆盖抽象方法AWT程序

import java.awt.*; import java.awt.event.*; public class QuadraticSolver extends Frame implements ActionListener, WindowListener { private TextField tfX2; private TextField tfX; private TextField tfNum; private TextField tfVal1; private TextField tfVal2; private TextField tfRoots; private Label lblX2; private Label lblX; private Label lblNum; private Label lblVal1; private Label lblVal2; private Label lblRoots; private Button btnCheckRoots; private Button btnCalc; […]

为什么Java允许来自接口的多重inheritance,而不是来自抽象/具体类

可能重复: 为什么Java中没有多重inheritance,但允许实现多个接口 为什么Java允许从接口进行多重inheritance,而不是从抽象或具体类inheritance

为什么我们需要Java中的抽象类?

为什么我们需要Java中的抽象类? 如果你永远不会把它变成一个物体,为什么一开始呢? 你如何使用它? 为什么会这样? 我用抽象方法想知道同样的事情。 我发现这似乎是一个类似的概念,有一个没有子类的超级类可能无关紧要。

所有具体方法的抽象类

是否存在一些实际的编程情况,当有人在其中的所有方法都具体时声明一个类抽象?