【发布时间】:2016-09-04 02:37:49
【问题描述】:
为了理解 Genie 中的类继承,我创建了两个类(Kitten 和 Puppy),它们应该从 Pet 类继承属性。目的是让 minou 喵喵叫,让 duke 吠叫,但是 _name 似乎超出了子类的范围。如何将此属性传递给子类?
代码如下:
[indent=4]
// Experimenting with classes in Genie
class Pet
_name:string
construct ( name:string? )
_name = name
class Kitten : Pet
def meow()
print self._name + " meowed!"
class Puppy : Pet
def bark()
print self._name + " barked!"
init
var minou = new Kitten("Minou")
var duke = new Puppy("Duke")
minou.meow()
duke.bark()
错误信息是:
Test78.gs:16.15-16.24: error: Access to private member `Pet._name' denied
print self._name + " meowed!"
【问题讨论】:
-
你有一个简单的错字,我修正了,我添加了我现在收到的错误消息。解决方案是使
_name受保护而不是私有。 -
但是我不知道 Genie 类中受保护/公共成员的语法,也许这是一个限制,应该报告给 bugzilla.gnome.org
标签: inheritance vala genie