问题标签 [abstract-methods]
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.
python - python @abstractmethod 装饰器
我已经阅读了关于抽象基类的 python 文档:
从这里:
abc.abstractmethod(function)
指示抽象方法的装饰器。使用这个装饰器需要类的元类是
ABCMeta
或派生自它。ABCMeta
除非重写其所有抽象方法和属性,否则无法实例化具有派生元类的类。
在这里
您可以将
@abstractmethod
装饰器应用于必须实现的方法,例如draw();然后,Python 将为未定义该方法的类引发异常。请注意,仅当您实际尝试创建缺少该方法的子类的实例时才会引发异常。
我已经使用此代码进行了测试:
代码很好,所以我不明白。如果我输入c.abstractMethod
,我会得到:
我在这里缺少什么?ConcreteClass
必须实现抽象方法,但我也不例外。
java - C++ 和 Java 中的抽象方法和覆盖函数
在 C++ 和 Java 或它们的相关规则中,对覆盖抽象方法的限制是什么。您必须匹配参数或返回类型。我通常会看到只使用返回类型而没有参数实现的抽象函数,是否由派生类来指定其余部分。它是如何工作的?
java - 抽象类使用它自己的抽象方法?
我正在查看游戏中的一些代码,我遇到了一些我以前从未见过的东西,我真的不知道发生了什么。
这里发生了什么?当它调用时会发生什么entityInit()
?
java - 有没有办法制作一个非抽象但必须被覆盖的方法?
有没有办法强制子类覆盖超类的非抽象方法?
我需要能够创建父类的实例,但是如果一个类扩展了这个类,它必须给出它自己的一些方法的定义。
c# - c#中的抽象方法
老实说,我不知道为什么这让我失望。
上面的代码抛出了这个错误:
BankAccount.MakeWithdrawal()' 是抽象的,但它包含在非抽象类“Worksheet7.BankAccount”中
即使我将类声明为抽象类也是如此。有什么我在这里遗漏的东西,或者我在视觉工作室中遗漏了什么?
java - 在声明抽象方法时指定默认返回
我有以下课程
界面:
继承抽象类的类:
当我在 Eclipse 中创建 MyClass 时,会自动创建 checkSomething() 方法,但默认返回值是 false。有没有办法在抽象方法定义中指定默认返回类型应该是什么?
yii - Yii Behaviors 中的“抽象”方法
我一直在开发 Yii 应用程序。而且我想知道是否可以在模型行为中声明某种“抽象”方法。我知道不可能直接使用以下声明:
因为我们需要这个类的实例。但我也知道 Yii 很神奇:)
我只想让所有者类以强制顺序从行为中重新声明方法。当然,除了行为之外,我还可以使用界面,但是......
抱歉,如果我错过了要说的或不清楚的地方。只要问,我会尽力解释我的意思。
有人知道吗?
提前致谢。
UPD
我明白 Yii 只是 PHP。它不扩展 PHP。它是上层建筑。而且它没有多重继承,因为 PHP 没有。
我确实理解不能使用抽象关键字声明行为方法。这就是为什么我在引号中写了“抽象”这个词。但是无所谓。我知道行为是如何运作的。
我的问题是我是否可以以某种方式强制模型(例如 CActiveRecord 的子代)声明某种方法。
例如,出于我的目的,我可以这样做:
因此,如果我将此行为附加到我的模型并调用方法 doFantasticThings,此方法将尝试从模型(所有者)调用方法 prepareForFantastic。如果模型没有方法 prepareForFantastic 声明的新异常将被抛出,因为未声明的方法被调用。
看起来我自己已经回答了我的问题:) 你对此有何看法?
UPD2
是的,我知道如果我们不调用“抽象”方法,我们就不会知道它没有被声明。这是可解释语言的“魅力” :) 在代码运行之前,我们不知道是否有任何错误。虽然,如果我们能尽早知道这一点,那就太棒了。例如,一旦FantasticBehavior
-class 的实例附加到模型,我们可以抛出一些子对象CException
来显示必须在模型中声明哪些所需的方法。为了实现这一点,我们可以使用如下所列的东西:
我们需要覆盖attach
类中的方法CBehavior
并检查是否声明了“抽象”方法。方法abstractMethods
用于获取列表“抽象”方法。
我不知道是否有attachBehavior
事件存在。如果是这样,我们可以使用它而不是覆盖attach
方法。
将这个想法基类用于具有“抽象”方法的行为。
你怎么看待这件事?
说不定以后我会为Yii做扩展名利双收?:))
java - 用模式设计风格的抽象方法定义抽象类
如何使用设计模式在抽象类中定义抽象方法,而某些方法方法可能会覆盖或更改其在子类中的行为?在这个例子中,public abstract class GameCharacter
有attack
一个应该是模式的方法(定义一些方法,GameCharacter
一些留空,在子类中被*覆盖*)。
php - PHP, OOP, 接口
我正在学习 PHP,我在想,
抽象类或接口中的方法称为抽象方法。
我的问题:
抽象类/接口中定义的抽象方法是否不包含在子类中?
如果是真的,那就意味着:
仅在子类内部的是未定义为抽象的方法/属性,这意味着接口在实现时无法创建子类。
也意味着:
当从抽象类/接口定义抽象方法时,扩展/实现抽象类/接口的类只需查看方法签名并确保这些方法被覆盖(女巫不是真正覆盖,重写是一个更好的词说(虽然我听到压倒一切))。
如果有人可以帮助我专业地理解抽象方法,祝你有美好的一天。
c# - 重命名抽象测试方法 (Visual Studio / c#)
问题:有没有办法手动命名测试方法而不是使用方法名?
背景:我目前是 BizTalk 开发人员,我们使用 BizUnit 框架来测试我们的项目。
为了让这些单元测试运行,我们使用 c# 在 Visual Studio 中构建单元测试的内部功能,从中我们调用 bizunit 框架来进行实际的(特定于 biztalk 的)测试。
令人讨厌的是,我们需要几行“样板”代码来创建 BizUnit 所需的测试用例;执行这些步骤的抽象类的使用促进了我们需要做的实际开发。此外,抽象类允许我们执行一些关于文档结构的“内部策略”(通过使用几个模板方法)。
抽象基类“IBaseTestScenario”包含称为“test”的实际方法:
使用这种结构,我们可以强制执行步骤的顺序,我们可以“提醒”开发人员提供一个体面的名称和描述(因为方法是抽象的,他们将被迫提供信息)以及执行该操作的实际代码测试(特定于每个场景)从样板代码中分离出来。
当我们想要创建一个场景时,我们只需要扩展这个基类并实现包含场景特定信息的抽象方法。
在您运行测试之前,这一切看起来都很整洁......
在测试结果窗口中,所有测试都称为“测试”,您需要将“类名称”列添加到视图中以便能够区分它们。
解决这个问题的快速(而且相当肮脏的方法)是删除接口中的 TestMethod 注释,并在每个单独的实现中放置以下“调用者”
有谁知道更改测试方法名称的(更好的)方法?使用接口的现有抽象方法“getName()”将是理想的......
亲切的问候,
斯蒂金