如何在 vala 中覆盖 属性?
How to override property in vala?
当我继承自GTK widget时,我想覆盖继承的属性,这样不影响正常运行。
但是我找不到任何 material 或描述它的教程。
由于属性是从父级 classes 继承的,您通常不需要为它们做任何事情来继续工作。
我假设您想以某种方式修改 getters / setters。如果不是,请澄清您的问题。
- 如果可以修改parent class:
只需创建具有(至少)受保护可见性级别的显式虚拟 getter and/or setter 方法。
使用隐式 getters 和 setters valac 将为您创建方法,但它们不是虚拟的。
然后您可以使用普通方法覆盖和基本 class 调用语义来调整父级 属性。
- 如果不能修改parent class:
您仍然可以做的一件事是为 notify
信号注册一个处理程序,以对被调用的 setter 做出反应。
或者你可能很幸运,父 class 带有一些工具来修改它的行为。
当我继承自GTK widget时,我想覆盖继承的属性,这样不影响正常运行。 但是我找不到任何 material 或描述它的教程。
由于属性是从父级 classes 继承的,您通常不需要为它们做任何事情来继续工作。
我假设您想以某种方式修改 getters / setters。如果不是,请澄清您的问题。
- 如果可以修改parent class:
只需创建具有(至少)受保护可见性级别的显式虚拟 getter and/or setter 方法。
使用隐式 getters 和 setters valac 将为您创建方法,但它们不是虚拟的。
然后您可以使用普通方法覆盖和基本 class 调用语义来调整父级 属性。
- 如果不能修改parent class:
您仍然可以做的一件事是为 notify
信号注册一个处理程序,以对被调用的 setter 做出反应。
或者你可能很幸运,父 class 带有一些工具来修改它的行为。