问题标签 [abstract]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
13 回答
126474 浏览

java - Java中的抽象变量?

我来自 c#,这很容易,而且可能。

我有这个代码:

但 Eclipse 告诉我我使用了非法修饰符。

我有这堂课:

我想要以这种方式定义的变量和方法,让 Eclipse提示我,我有未实现的抽象变量和方法。

我需要如何定义我的抽象类,以便提示我实现抽象?

编辑 1

我将为不同的数据库表创建不同的类。每个类都应该有自己的 TABLENAME 变量,也不例外。每次创建扩展抽象类的新类时,我都必须确保这个变量是静态的。

然后在抽象类中我将有一个方法,例如:init();

如果在这个 init() 方法中我调用 TABLENAME,它应该从子类中获取值。

这样的事情也应该解决

编辑 2

我想要在每个类中定义一个常量(静态),并在抽象中定义它的名称。

  • 我在抽象中定义了变量 TABLENAME,但没有给出值。
  • 我创建了一个 clsContactGroups,应该提示我实现 TABLENAME,这是获取一些数据的地方。例如:TABLENAME="contactgroups";
  • 我创建了第二个类 clsContacts,应该提示我实现 TABLENAME,这是获取一些数据的地方。例如:表名=“联系人”;
    ETC...
0 投票
3 回答
11288 浏览

php - PHP中c++的虚函数等价物是什么?

abstract function xxx吗?

我刚刚做了一个测试,似乎表明私有方法也是虚拟的?

输出是2

0 投票
10 回答
7055 浏览

php - PHP中的静态类通过抽象关键字?

根据PHP 手册,这样的类:

无法实例化。如果我需要一个没有实例的类,例如注册表模式:

简单地将类声明为抽象类会被认为是一种好的风格吗?如果不是,与抽象类相比,将构造函数隐藏为受保护方法有什么好处?

问的理由:据我所知,它可能有点滥用功能,因为手册提到抽象类更像是稍后具有实例化可能性的类的蓝图。

更新:首先,感谢所有的答案!但是许多答案听起来很相似:“你不能实例化一个抽象类,但是对于一个注册表,为什么不使用单例模式呢?”

不幸的是,这或多或少完全重复了我的问题。与仅声明它而不必担心这一点相比,使用单例模式(又名隐藏)有什么优势?(例如,开发人员之间的一个强烈含义是,类实际上并没有被使用。)__construct()abstractabstract

0 投票
4 回答
251 浏览

c++ - 在基础中使用抽象期望它是派生类?

采取这个简单的代码:

我想要的是构建一个抽象类,该类将具有一个函数,该函数将调用一个期望它在派生类中实现的函数

问题是我似乎无法让它工作,编译器说它无法编译,因为它找不到要在 x() 中执行的 foo() 的引用(或类似的东西)基类。这能行吗?谁能给我一个例子?

编辑:似乎它只是在“foo();”时不起作用 在 A 类(基础)的析构函数中......
这让我很困惑。=[

EDIT2:这有多有趣。我刚刚创建了一个 callfoo(){ foo(); 现在它编译好了,但是如果我尝试直接从基类 A 的析构函数中调用纯抽象函数,它会给我错误......很奇怪。有人对此有任何想法吗?o_o

请问有什么帮助吗?

谢谢,
乔纳森

更新

它在析构函数之外工作。现在我只是感到困惑。

尝试将“foo()”放在 A(base) 类的析构函数中,至少对我来说不是编译...

有什么帮助吗?

0 投票
4 回答
1798 浏览

perl - 在 Perl OOP 中继承抽象方法时找不到方法错误

我有一个从超类调用方法的子类。超类中的方法使用在超类中定义为抽象(不是真正抽象)但在子类中实现的方法。

例如:

现在当我这样做时:

...它调用抽象消息,我得到指定的错误消息。如果我从超类中取出抽象方法并将实现留在子类中,它无法识别该方法并且我得到子例程抽象方法未找到错误。

0 投票
4 回答
11981 浏览

c# - 从非抽象类派生抽象类

从非抽象类派生抽象类是否可以,还是这种方法有问题?

这是一个小例子:

在上面的示例中,我不想将 Task 类抽象化,因为我想直接实例化它。PeriodicalTask​​ 应该从 Task 继承功能并添加一些额外的成员,但我不想直接实例化它。仅应实例化 PeriodicalTask​​ 的派生类。

0 投票
3 回答
1362 浏览

c# - C# 中带有抽象子类的基类?

两个问题:

  1. 我如何制作它以便我可以向构造函数添加东西​​但仍会执行原始构造函数?

  2. 如何使子类可以将成员添加到参数类?

0 投票
7 回答
2622 浏览

c++ - 抽象类的大小

如何找到抽象类的大小?

由于这是一个抽象类,我无法创建此类的对象。如何使用“sizeof”运算符找到抽象类 A 的大小?

0 投票
4 回答
384 浏览

c# - 测试从抽象类中使用的方法

我必须对一个方法 (runMethod()) 进行单元测试,该方法使用继承的抽象类中的方法来创建布尔值。抽象类中的方法使用 XmlDocuments 和节点来检索信息。代码看起来有点像这样(这非常简化,但它说明了我的问题)

因此,代码想要从创建的 XmlDocument 中获取一个属性,并使用它将结果形成一个布尔值。现在我的问题是,确保我可以控制布尔结果行为的最佳解决方案是什么。我正在使用 Moq 进行可能的模拟。

我知道这个代码示例可能有点模糊,但这是我能展示的最好的。希望大家能帮忙。

编辑:我基本上需要的是:
我需要能够在测试 AbstractInheret 类时控制 getProperty()

0 投票
9 回答
20771 浏览

java - 有没有办法确保实现接口的类实现静态方法?

首先,我阅读了 Erickson 对“为什么我不能在 Java 接口中定义静态方法?”的有用回复。. 这个问题不是关于“为什么”,而是关于“那么如何?”。


编辑:我原来的例子是不合适的,但我会把它留在下面。

虽然我现在确信,在大多数情况下,我想做的事情是矫枉过正,但在一种情况下可能需要它:

我再举个ParametricFunction例子。现在让我们看一个复杂的函数,比如Bessel 函数,其中查找表是合适的。这必须被初始化,所以这两个选项是将参数直接传递给构造函数或提供一个init(double[] parameters). 后者的缺点是getValue(double x)必须在每次调用时检查初始化(或者ArrayIndexOutOfBoundsException必须将其视为初始化检查),因此对于时间要求严格的应用程序,我更喜欢构造函数方法:

这就涉及到另一个问题,接口中的构造函数是不可能的。那里有什么好的解决方案?我当然可以使用这种init(double[] parameters)方法,但我提到了我为什么不这样做的原因。
(编辑:好的,这里有一个实现接口的抽象类)

现在让我们假设ParametricFunction只允许某些参数,例如正整数。如何检查传递给构造函数的参数的有效性?抛出IllegalArgument-exception 是可能的,但 acheckParametersValidity(double[] parameters)似乎更方便。但是需要在构造之前检查参数,所以它必须是静态方法。这就是我真的很想知道一种方法来确保每个实现ParametricFunction接口的类都定义了这个静态方法。

我知道这个例子是相当人为的,不简单地init通过接口使用方法的原因是有争议的,我仍然想知道答案。如果您不喜欢它,请将其视为学术问题。

(原始示例)

所以基本上我想要一个接口来提供常用方法和getSimilarObject方法。对于(编造的)例子

进而

由于在当前的 Java 标准中不允许这样做,那么最接近这一点的是什么?

这背后的想法是将几个ParametricFunctions 放在一个包中并使用反射将它们全部列出,允许用户选择例如要绘制的一个。显然,我们可以提供一个包含可用 s 数组的加载器类ParametricFunction,但每次实现一个新的时,都必须记住在其中添加它。

编辑:调用它的一个例子是

并打电话evaluate("Parabola", 1, new double[]{1,2,0});