【问题标题】:How to override property in vala?如何覆盖vala中的属性?
【发布时间】:2018-06-18 06:08:09
【问题描述】:

当我从 GTK 小部件继承时,我想覆盖继承的属性,这样就不会影响正常操作。 但是我找不到任何描述它的材料或教程。

【问题讨论】:

  • “不受影响”是什么意思?
  • @AlexB 我的意思是父母中的其他方法可以工作,但使用我的覆盖 getter 和 setter
  • 这并没有真正澄清,据我所知,您在属性更改时尝试运行代码,所以notify 是您的朋友

标签: vala


【解决方案1】:

由于属性是从父类继承的,您通常无需为它们继续工作而做任何事情。

我假设您想以某种方式修改 getter / setter。如果不是,请澄清您的问题。

  • 如果可以修改父类:

只需创建具有(至少)受保护可见性级别的显式虚拟 getter 和/或 setter 方法。

使用隐式 getter 和 setter,valac 将为您创建方法,但它们不会是虚拟的。

然后您可以使用普通方法覆盖和基类调用语义来调整父母属性。

  • 如果不能修改父类:

您仍然可以做的一件事是为notify 信号注册一个处理程序,以对被调用的设置器做出反应。

或者你可能很幸运,父类有一些工具可以修改它的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2015-01-08
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多