abstract相关内容
我在 Scala 中读到过,通常建议使用 Traits 而不是抽象类来扩展基类. 以下是好的设计模式和布局吗?这就是 Traits 旨在取代 Abstract 的方式吗? 客户端类(带定义函数1) trait1 类(覆盖 function1) trait2 类(覆盖 function1) specificClient1 使用 trait1 扩展客户端 specificClien
..
如何在 Python 中使类或方法抽象? 我尝试重新定义 __new__() 像这样: F 类:def __new__(cls):raise Exception("无法创建抽象类 %s 的实例" %cls) 但是现在如果我创建一个从 F 继承的类 G 像这样: G(F) 类:经过 然后我也不能实例化 G,因为它调用了它的超类的 __new__ 方法. 有没有更好的方法来定义抽象
..
我有一个名为 Xpto 的抽象类和两个扩展它的子类,名为 Person 和 Car.我还有一个名为 Test 的类,带有 main() 和一个方法 foo(),用于验证两个人或汽车(或扩展 Xpto 的类的任何对象)是否是等于.因此,我在 Person 和 Car 类中重新定义了 equals().两个人同名时相等,两辆车同名时相等. 但是,当我在 Test 类中调用 foo() 时,我总是
..
我想要为我的一些自定义 UserControl 的一些抽象基类. 原因很明显:它们共享一些公共属性和方法(一个基本实现实际上是接口的某些元素),我只想实现它们一次. 我通过定义我的抽象基类来做到这一点: 公共抽象类 ViewBase : UserControl, ISomeInterface 然后我像往常一样和设计师一起去实现我的一个观点: public partial class S
..
F# 不支持protected 方法的定义.这里解释了为什么 F# 将 virtual 方法替换为在抽象类中定义的 abstract 方法(请参阅 此处). 我想知道是否有办法完全阻止从派生类外部访问 abstract 方法. 解决方案 和 Patryk Ćwiek 一样,我也不认为这是可能的,但这里有一个替代方案: 从设计模式我们知道我们应该偏爱组合而非继承.根据我的经验,
..
我试图掌握这两个概念之间的关系. 首先考虑一个抽象数据类型的例子: 数据树 a = Nil|节点 { 左 :: 树 a,价值 :: 一个,右 :: 树 a } 根据 Haskell 维基: 这种类型是抽象的,因为它没有定义其结构的某些方面,由数据类型的用户提供.这是抽象数据类型的弱形式.来源 现在考虑参数多态性的概念: 参数多态是指当一个值的类型包含一个或多个(不受约束
..
我想知道:将属性拟合到属于大型继承结构的类的最佳方法是什么.我想创建一个抽象的静态方法,每个类都会覆盖该方法,但是经过一个似乎不起作用的快速谷歌.有什么建议? 我可以把它变成一个实例方法,但它确实是一个类级别的规范. 提前致谢. 解决方案 我建议你创建一个抽象方法,就像你想到的那样,让这个方法在每个类的静态变量中实现. > 抽象类 Base {抽象字符串 getValue(
..
Liskov 替换原则 (LSP) 说: 不能在子类型中加强先决条件. 在 C# 中,我可能会违反整个原则,如下所示: 公共类A{公共虚拟无效 DoStuff(字符串文本){Contract.Requires(!string.IsNullOrEmpty(text));}}公开课 B : A{公共覆盖无效 DoStuff(字符串文本){Contract.Requires(!string
..
我想从 SuperClass 强制 SubClasses 到 @Override 方法. SuperClass 中的方法不能是 abstract,因为我想提供一些基本的实现. 这是我的代码示例: 公共抽象类GenericModel{长 ID,计数器;公共字符串方法ToBeOverridenInSubClass(字符串名称){//一些基本的实现//其余细节将由子类提供返回名称;}}公共
..
这可能更像是一个设计问题,而不是“我可以这样做吗?"题.我正在创建一个属性,其目标被定义为方法.有没有办法对方法域施加限制,即目标方法必须声明为抽象、虚拟、静态等? 最终目标是扫描这些方法并在子类中实现它们——但是我希望它们是抽象的.有没有更好的方法来实现对我的属性目标的这种伪限制? 解决方案 您应该能够使用 MethodInfo.IsVirtual 和 MethodInfo.IsA
..
我有三个课程有问题.它们被命名为:GameScene、StageScene、StageOne.我的问题是我想在 StageScene 中实现 initialize,但仍然强制 StageOne 实现它,这样每当有人使用 StageOne 对象 (stageOne.initialize()) 时,都会为 StageScene 和 StageOne 运行 initialize.有谁知道如何做到这一点?
..
我正在使用 Delphi Pro 6.现在,知道一个类是否缺少基类抽象方法的唯一方法是等待 IDE 发出一个“{派生类} 的构造实例,其中包含抽象方法 {base class.abstract method name}"警告或在尝试调用丢失的方法时等待运行时抽象错误方法.前者是不够的,因为它只为当前项目中实际构建的那些派生类找到警告.后者简直就是痛苦. 如果 Delphi 为所有未立即声明/
..
我正在尝试在 python 3.7 中创建一个具有许多抽象 python 属性的基类. 我使用@property、@abstractmethod、@property.setter 注释尝试了一种方式(参见下面的“开始").这有效,但如果子类没有实现 setter,它不会引发异常.这就是对我使用@abstract 的意义所在,所以这不好. 所以我尝试使用两个@abstractmethod
..
在许多语言中,如果您尝试实例化抽象类,则会出现编译时错误.但是,在 Dart 中,您会在编译时收到警告和运行时异常 AbstractClassInstantiationError. 这是为什么?有人可以提供一个例子,编译这样的代码是合理的吗? 解决方案 Dart 试图让您在开发程序的同时运行它.这就是为什么许多其他语言中的编译时错误在 Dart 中是编译时警告和运行时错误的原因.这包
..
我正在尝试以下 python 代码: from abc import ABCMeta, abstractmethod班级酒吧:__元类__ = ABCMeta@抽象方法def foo(self):经过类 Bar2(Bar):def foo2(self):打印(“Foo2")b = 酒吧()b2 = Bar2() 我认为拥有 @abstractmethod 将确保我的父类是抽象的,子类也将是抽象
..
我知道这个问题已经被问过很多次了,但我找不到任何最终的解决方案;所以这里是: 如何使用最佳实践在数据库中存储 IP(IPv4 和 IPv6)而不知道数据库?这是用于数据库抽象目的的情况,例如 PHP PDO. 顺便提一下,我有 PHP 5.2.17,因为我在 Windows 上需要 PEAR. 人们一直建议将其存储为 varbinary(16) 并使用 mysql 函数 inet
..
这是我拥有的代码的简化部分: 抽象类DataManager{protected static Dictionary价值观;} 然后我有: class TextManager : DataManager{静态文本管理器(){Values = ...//填充数据}} 而且,现在我得到了 CA1810.我看到了一些解决方案,比如公开 Values 并将它们设置在其他地方,但我不喜欢那样,或者在
..
我有以下模拟设置,有一个抽象类型,具体类型作为子类型,以及一个函数 f,它有两个参数,第一个是 Letter. 抽象类型字母结尾struct A
..
我在某些 StackOverflow 答案中看到了术语抽象方法、具体方法和默认方法的“不同"定义. Java 语言规范给出的真正定义是什么?请在您的答案中包含相关的支持 JLS 参考. 解决方案 下面的链接/部分编号取自 Java 11 版本的 Java 语言规范. 根据 JLS8.4.3.1: "abstract 方法声明将方法作为成员引入,提供其签名(第 8.4.2
..
在 catch 子句中,我想打印异常的跟踪跟踪: 尝试{...} 捕捉(异常除外){exc.printStackTrace();...} 但在某些情况下,我没有得到堆栈跟踪,而是看到如下内容: 线程“pool-1-thread-2"中的异常 java.lang.AbstractMethodError: java.lang.Exception.printStackTrace()V... 通常
..