Oop 在Perl 6中继承私有属性
我在文档中找不到任何内容,但似乎在子类中无法访问其超类的私有变量。我说得对吗Oop 在Perl 6中继承私有属性,oop,raku,Oop,Raku,我在文档中找不到任何内容,但似乎在子类中无法访问其超类的私有变量。我说得对吗 A类{ 有$!a; } B班是A班{ 有0.b美元; 方法集a($x){ $!a=$x; } } 我的$var=B.new(); $var.set_a(5); 比如说$var.a; 这将显示一条错误消息: 属性$!a未在B类中声明 顺便问一下,在哪里可以阅读文档中的类?在Perl 6中,类中声明的属性只能在该类中访问。这意味着可以自信地重构类中的状态,而不必担心在类外使用该状态 子类不接受有关属性的任何特殊访问。有
A类{
有$!a;
}
B班是A班{
有0.b美元;
方法集a($x){
$!a=$x;
}
}
我的$var=B.new();
$var.set_a(5);
比如说$var.a;
这将显示一条错误消息:
属性$!a未在B类中声明
顺便问一下,在哪里可以阅读文档中的类?在Perl 6中,类中声明的属性只能在该类中访问。这意味着可以自信地重构类中的状态,而不必担心在类外使用该状态 子类不接受有关属性的任何特殊访问。有些语言提供了受保护的修饰符。这在Perl 6中是不存在的。某个对象是该类的私有对象,或者是向外部世界公开的对象(例如
具有$.a
),因为:
角色
中的属性被组合到类中,就像它们已经在类本身中声明一样工作。因此,可以在类主体中使用组合的角色的属性。如果希望在OO上下文中编写可重用的功能片段,则更典型的做法是在Perl6中使用角色和组合,而不是继承。实际上,将原始代码编写为:
role A {
has $!a;
}
class B does A {
has $.b;
method set_a($x) {
$!a = $x;
}
method a() { $!a }
}
my $var = B.new();
$var.set_a(5);
say $var.a;
根据需要工作。您可以使用“信任”获得访问权限。我还没有在子类中尝试过。()主类文档在这里:。根据定义。不过,也许这可以在文件中明确说明。