Flutter 为什么dart对get和set有特殊的关键字?
我是个新手,我只是想知道getter和setter的特殊关键词。为什么dart为getter和setter分别保留了特殊的关键字Flutter 为什么dart对get和set有特殊的关键字?,flutter,dart,Flutter,Dart,我是个新手,我只是想知道getter和setter的特殊关键词。为什么dart为getter和setter分别保留了特殊的关键字get和set?有什么特别的原因吗?因为和其他语言一样,它也可以用简单的函数来实现 例如,在dart中,我们可以获取和设置关键字 class Person { String _name; String get name => _name; set name (String val) => _name = val; } 在java中,我们使用公
get
和set
?有什么特别的原因吗?因为和其他语言一样,它也可以用简单的函数来实现
例如,在dart中,我们可以获取和设置关键字
class Person {
String _name;
String get name => _name;
set name (String val) => _name = val;
}
在java中,我们使用公共方法进行同样的操作
// Java, No get, set keywords used
public class Person {
private String name; // private = restricted access
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
为什么在dart中需要单独的get和set关键字?这与我们在java中使用的普通getter和setter方法不同吗
我们可以简单地使用
class Person {
String _name;
String getName() => _name;
void setName(String val) => _name=val;
}
我知道这类似于直接使用变量而不是方法,只是我的问题是,在一个简单的getter和setter方法中有什么我们无法实现的,我们可以使用
get
和set
关键字吗?这基本上是为了方便和向后兼容。假设你从一个公共领域开始:
班级人员{
最后的字符串名;
}
但随后您决定名称应该是基于名字和姓氏的计算字段:
班级人员{
最后一个字符串lastName;
最后一个字符串名;
字符串get name=>“$firstName$lastName”;
}
在java中,最好不要使用公共类成员变量,因为它无法在不更改API的情况下转换为方法。因此,您必须始终编写
getVariable()
acessor方法,即使其中99%只有返回变量代码>作为正文。您能澄清您所指的其他语言,并提供一个示例吗?e、 g.kotlin还有一个get/set关键字。。我想不出哪种语言允许用“普通”方法重写属性。@herbert java、cpp、Python您不能用java中的方法重载类成员变量。。python也是getattr/setattrget
和set
的@property
语法糖,用于自定义getter和setter,以防您想要覆盖默认实现,或者具有没有支持字段的属性。然后,您可以使用具有正常属性语法的自定义getter和setter(例如,String get fullName{return“$firstName$lastName”;}…print(foo.fullName);