有没有办法指定要覆盖的功能?

基督教
interface A
{
    void f();
}
interface B
{
    void f();
}
class C : A ,B
{
// pseudocode 
    void A::a(){}
    void B::a(){}
}

有没有办法有不同的实现方式A::f,并B::f在同一个班?

BioTronic

当它们具有相同的签名时,否*。如果A.fisvoid f()B.fis int f(),则有可能。

*实际上,有一种方法,如果您接受它没有做完全相同的事情:

interface A { string f(); }

interface B { string f(); }

class C : A {
    string f() { return "A"; }
    string bf() { return "B"; }
    
    // Pretend to be a B
    alias get this;
    B get() {
        auto that = this;
        return new class B {
            string f() { return that.bf(); }
        };
    }
}

unittest {
    auto c = new C();
    
    A a = c;
    B b = c;
    
    assert(a.f() == "A");
    assert(b.f() == "B");
}

在上面的代码中,我们alias this用于创建一种第二继承链。这样做有一些问题,这是我们从get()back到back返回的东西无法解决的最大问题C

使用UDA和mixin可以使它更通用,这样就可以编译并运行:

interface A { string f(); }
interface B { string f(); }
interface C { string f(); }
@implements!(B, C)
class D : A {
    string f() { return "A"; }
    @implements!(B.f)
    string bf() { return "B"; }
    @implements!(C.f)
    string cf() { return "C"; }
    mixin implement!();
}

unittest {
    D d = new D();
    A a = d;
    B b = d;
    C c = d;

    assert(a.f() == "A");
    assert(b.f() == "B");
    assert(c.f() == "C");

    assert(a == cast(A)d);
    assert(b == cast(B)d);
    assert(c == cast(C)d);
}

但是,这留给读者练习。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法覆盖Quill的svg图标?

有没有办法停止覆盖json文件?

有没有办法覆盖unicode字符?

有没有办法让这个方法适合覆盖?

有没有办法覆盖 Mockito 中的 doReturn?

有没有办法扭转特定功能的处理?

有没有办法打印功能接口?

有没有办法使此功能更快?(C)

有没有办法反思Lua中的功能?

有没有办法记录功能参数的参数?

有没有办法等到功能完成?

有没有办法使您的功能“冷却”?

有没有办法停止已启动的功能?

有没有办法绘制没有功能的最佳拟合曲线?蟒蛇

有没有办法在Python中覆盖现有(系统)类上的方法?

有没有办法在脚本中更新而不是覆盖 Dask YarnCluster 的 worker_env?

有没有办法可以覆盖XF中标签的text属性?

有没有办法覆盖Serilog全局记录器的日志级别

开玩笑-有没有办法检查测试覆盖率?

有没有办法覆盖浏览器或用户代理的事件调度?

有没有办法可以添加单个事件侦听器来覆盖多个?

有没有办法覆盖 Angular Material 表中可扩展行的间距?

有没有办法为特定的HashSet或HashMap覆盖类型的相等和哈希函数?

有没有办法在应用级别覆盖 Android 的平台属性值?

有没有办法在构建dist时覆盖sbt中的packageName?

有没有办法显示因果报应覆盖范围缺失的地方

有没有办法确保一个类覆盖 hashCode

有没有办法覆盖单元格之间导航的默认行为?

有没有办法自动覆盖NetBeans中的方法?