问题标签 [abstract-function]

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 投票
2 回答
3960 浏览

php - 接口和抽象公共函数

在我看来,两者interfaceabstract function非常相似,

这就像命令必须执行某些方法,

那么有什么区别呢?

0 投票
7 回答
88800 浏览

php - 如何在 PHP 的非抽象类中声明抽象方法?

报告:

PHP 致命错误:absclass 类包含 1 个抽象方法,因此必须声明为抽象方法或实现其余方法(absclass::fuc)

我想知道实现其余方法意味着什么,如何?

0 投票
4 回答
244281 浏览

c# - 虚拟方法和抽象方法之间的区别

这是来自MSDN的一些代码:

任何人都可以就抽象方法和虚拟方法之间的区别解释上述代码吗?

0 投票
3 回答
141 浏览

php - 如何声明抽象类?

我试图让我清楚地了解抽象方法,所以我编写了这段代码并对其进行了测试。但是当我运行它时出现以下错误:

那么问题出在哪里,为什么?

0 投票
2 回答
12886 浏览

php - 为什么 PHP 允许抽象静态函数

考虑以下代码:

PhpStorm IDE 在声明中发出警告abstractStaticFunction,内容如下:

PHP 严格标准:静态函数“abstractStaticFunction”不应该是抽象的。

静态函数不应该是抽象的。

但是,PHP 在解析此类时会继续执行程序并输出以下内容:

PHP 严格标准:静态函数 ExampleClass::abstractStaticFunction() 在第 7 行的 php shell 代码中不应该是抽象的

在我看来,因为 PHP 允许在抽象类上调用静态函数,所以在抽象类上定义抽象静态函数应该是不可能的。

为什么解释器在 PHP 中允许抽象静态函数,当它们是荒谬的?

0 投票
3 回答
136 浏览

java - 具有抽象函数的 Java 枚举可以做什么非抽象版本不能?(即是否存在技术差异,或者只是一种模式?)

好的,在堆栈上的这个答案中,答案的海报显示了一个如何在枚举中使用抽象方法的示例。我将在这里为后代重复该答案,尽管稍作修改以更好地说明我的问题的基础。

考虑这个使用抽象方法的枚举:

如您所见,由于“动作”是一个抽象函数,因此每个元素都必须通过枚举的匿名子类定义覆盖。

将此与这个无抽象、功能相同的版本进行对比,它甚至使用完全相同的 API:

在此示例中,您只需指定与默认值不同的特定情况。此外,它将值保存在一个漂亮、清晰易读的列表中,并减少了大量无关代码。

也许我遗漏了一些东西,但是抽象方法方法是否有技术优势?非抽象版本没有给你什么?它有什么额外的能力吗?

注意:我怀疑实际的答案是因为它本身并不是枚举的函数,而是因为枚举被编译为一个类并且一个类支持抽象函数。

但是,我也不确定这是否正确,因为正如其他人所展示的那样,枚举编译为 astatic final class这意味着它不能被子类化。也许编译器在使用抽象函数时没有添加“final”。不确定,因为我无法查看生成的输出,所以我不能肯定,但这是有道理的。

但特别是对于这个问题,具有抽象函数的枚举可以做任何非抽象版本不能做的事情吗?

0 投票
2 回答
684 浏览

android - Kotlin 通用抽象函数

我有一个抽象函数,我想在其中获取任何我Activity PresentersBaseActivity

所以我的函数应该只接受扩展BasePresenter视图的类BaseView

但是当我实现这个功能时,我得到一个错误

类型不匹配。

要求:T

找到:LauncherPresenter

我知道这是个愚蠢的问题,但我不知道我错在哪里。

0 投票
0 回答
76 浏览

delphi - 检查一个类是否有抽象函数

我想获取从特定基类继承的类列表。

使用 RTTI,我已经可以检查了。但我也想检查这些类中的每一个是否抽象。

我在这里找到了一个解决方案:如何检查 Delphi 类是否被声明为抽象类?

但是,对于 line if GetVirtualMethod(c, i) = @_AbstractError then,我收到@_AbstractError一个未知标识符的错误。

所以我的问题是,如何获取AbstractError过程的地址来检查我的类的任何虚拟方法是否指向该地址?当我查看System.pas文件时,我可以清楚地看到_AbstractError里面有。

或者,是否有另一种方法来检查给定方法是实现还是抽象?

我正在使用 Delphi XE6,并为方法GetVirtualMethodCount()GetVirtualMethod()上面引用的解决方案安装了 JCL。