Flutter 为什么dart对get和set有特殊的关键字?

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中,我们使用公

我是个新手,我只是想知道getter和setter的特殊关键词。为什么dart为getter和setter分别保留了特殊的关键字
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/setattr
get
set
@property
语法糖,用于自定义getter和setter,以防您想要覆盖默认实现,或者具有没有支持字段的属性。然后,您可以使用具有正常属性语法的自定义getter和setter(例如,
String get fullName{return“$firstName$lastName”;}…print(foo.fullName);