问题标签 [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.
java - Java中的抽象变量?
我来自 c#,这很容易,而且可能。
我有这个代码:
但 Eclipse 告诉我我使用了非法修饰符。
我有这堂课:
我想要以这种方式定义的变量和方法,让 Eclipse提示我,我有未实现的抽象变量和方法。
我需要如何定义我的抽象类,以便提示我实现抽象?
编辑 1
我将为不同的数据库表创建不同的类。每个类都应该有自己的 TABLENAME 变量,也不例外。每次创建扩展抽象类的新类时,我都必须确保这个变量是静态的。
然后在抽象类中我将有一个方法,例如:init();
如果在这个 init() 方法中我调用 TABLENAME,它应该从子类中获取值。
这样的事情也应该解决
编辑 2
我想要在每个类中定义一个常量(静态),并在抽象中定义它的名称。
- 我在抽象中定义了变量 TABLENAME,但没有给出值。
- 我创建了一个 clsContactGroups,应该提示我实现 TABLENAME,这是获取一些数据的地方。例如:TABLENAME="contactgroups";
- 我创建了第二个类 clsContacts,应该提示我实现 TABLENAME,这是获取一些数据的地方。例如:表名=“联系人”;
ETC...
php - PHP中c++的虚函数等价物是什么?
是abstract function xxx
吗?
我刚刚做了一个测试,似乎表明私有方法也是虚拟的?
输出是2
php - PHP中的静态类通过抽象关键字?
根据PHP 手册,这样的类:
无法实例化。如果我需要一个没有实例的类,例如注册表模式:
简单地将类声明为抽象类会被认为是一种好的风格吗?如果不是,与抽象类相比,将构造函数隐藏为受保护方法有什么好处?
问的理由:据我所知,它可能有点滥用功能,因为手册提到抽象类更像是稍后具有实例化可能性的类的蓝图。
更新:首先,感谢所有的答案!但是许多答案听起来很相似:“你不能实例化一个抽象类,但是对于一个注册表,为什么不使用单例模式呢?”
不幸的是,这或多或少完全重复了我的问题。与仅声明它而不必担心这一点相比,使用单例模式(又名隐藏)有什么优势?(例如,开发人员之间的一个强烈含义是,类实际上并没有被使用。)__construct()
abstract
abstract
c++ - 在基础中使用抽象期望它是派生类?
采取这个简单的代码:
我想要的是构建一个抽象类,该类将具有一个函数,该函数将调用一个期望它在派生类中实现的函数
问题是我似乎无法让它工作,编译器说它无法编译,因为它找不到要在 x() 中执行的 foo() 的引用(或类似的东西)基类。这能行吗?谁能给我一个例子?
编辑:似乎它只是在“foo();”时不起作用 在 A 类(基础)的析构函数中......
这让我很困惑。=[
EDIT2:这有多有趣。我刚刚创建了一个 callfoo(){ foo(); 现在它编译好了,但是如果我尝试直接从基类 A 的析构函数中调用纯抽象函数,它会给我错误......很奇怪。有人对此有任何想法吗?o_o
请问有什么帮助吗?
谢谢,
乔纳森
更新
它在析构函数之外工作。现在我只是感到困惑。
尝试将“foo()”放在 A(base) 类的析构函数中,至少对我来说不是编译...
有什么帮助吗?
perl - 在 Perl OOP 中继承抽象方法时找不到方法错误
我有一个从超类调用方法的子类。超类中的方法使用在超类中定义为抽象(不是真正抽象)但在子类中实现的方法。
例如:
现在当我这样做时:
...它调用抽象消息,我得到指定的错误消息。如果我从超类中取出抽象方法并将实现留在子类中,它无法识别该方法并且我得到子例程抽象方法未找到错误。
c# - 从非抽象类派生抽象类
从非抽象类派生抽象类是否可以,还是这种方法有问题?
这是一个小例子:
在上面的示例中,我不想将 Task 类抽象化,因为我想直接实例化它。PeriodicalTask 应该从 Task 继承功能并添加一些额外的成员,但我不想直接实例化它。仅应实例化 PeriodicalTask 的派生类。
c# - C# 中带有抽象子类的基类?
两个问题:
我如何制作它以便我可以向构造函数添加东西但仍会执行原始构造函数?
如何使子类可以将成员添加到参数类?
c++ - 抽象类的大小
如何找到抽象类的大小?
由于这是一个抽象类,我无法创建此类的对象。如何使用“sizeof”运算符找到抽象类 A 的大小?
c# - 测试从抽象类中使用的方法
我必须对一个方法 (runMethod()) 进行单元测试,该方法使用继承的抽象类中的方法来创建布尔值。抽象类中的方法使用 XmlDocuments 和节点来检索信息。代码看起来有点像这样(这非常简化,但它说明了我的问题)
因此,代码想要从创建的 XmlDocument 中获取一个属性,并使用它将结果形成一个布尔值。现在我的问题是,确保我可以控制布尔结果行为的最佳解决方案是什么。我正在使用 Moq 进行可能的模拟。
我知道这个代码示例可能有点模糊,但这是我能展示的最好的。希望大家能帮忙。
编辑:我基本上需要的是:
我需要能够在测试 AbstractInheret 类时控制 getProperty()
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 标准中不允许这样做,那么最接近这一点的是什么?
这背后的想法是将几个ParametricFunction
s 放在一个包中并使用反射将它们全部列出,允许用户选择例如要绘制的一个。显然,我们可以提供一个包含可用 s 数组的加载器类ParametricFunction
,但每次实现一个新的时,都必须记住在其中添加它。
编辑:调用它的一个例子是
并打电话evaluate("Parabola", 1, new double[]{1,2,0});
。