网站建设三网合一指的是什么意思,天涯社区和海南在线不能正常访问,单页网站制作系统,河南省建设工程中标信息网前言
任何需要对属性进行更多控制而不是允许简单字段访问的时候#xff0c;你都可以自定义 getter 和 setter。
正文
讲解
Getter#xff08;获取器#xff09;和Setter#xff08;设置器#xff09;是面向对象编程中用于控制对类属性访问的特殊方法。Getter用于获取属…前言
任何需要对属性进行更多控制而不是允许简单字段访问的时候你都可以自定义 getter 和 setter。
正文
讲解
Getter获取器和Setter设置器是面向对象编程中用于控制对类属性访问的特殊方法。Getter用于获取属性的值而Setter用于设置属性的值。它们允许你在属性访问过程中添加额外的逻辑例如验证输入、计算属性或记录属性访问。在你提供的示例中你展示了如何在Dart编程语言中定义Getter和Setter。
首先让我们来看看Getter的示例
class MyClass {int _aProperty 0;// Getter for aPropertyint get aProperty _aProperty;
}在上述示例中我们创建了一个名为_aProperty的私有属性并定义了一个名为aProperty的Getter。Getter的定义方式是在属性名称前面添加get关键字后跟Getter的名称。在Getter内部我们简单地返回了_aProperty的值。这允许外部代码通过myInstance.aProperty来访问_aProperty的值就像访问普通属性一样但实际上是通过Getter方法。
接下来让我们来看看Setter的示例
class MyClass {int _aProperty 0;// Setter for aPropertyset aProperty(int value) {if (value 0) {_aProperty value;}}
}在这个示例中我们定义了一个名为aProperty的Setter。Setter的定义方式是在属性名称前面添加set关键字后跟Setter的名称。在Setter内部我们可以添加额外的逻辑以控制属性的赋值。在这里我们检查传入的值是否大于等于0如果是则将其赋值给_aProperty。这意味着外部代码可以通过myInstance.aProperty newValue来设置_aProperty的值但Setter允许我们在赋值时添加验证或其他逻辑。
总结一下Getter和Setter是用于控制属性访问的特殊方法允许你在获取和设置属性值时添加额外的逻辑。Getter用于获取属性的值Setter用于设置属性的值。这些机制有助于封装属性并确保属性值的合法性。在示例中你展示了如何在Dart中定义Getter和Setter但这些概念在许多其他面向对象编程语言中也是通用的。
练习
想象你有一个购物车类其中有一个私有的 List 类型的 prices 属性。添加以下内容
一个名为 total 的 getter用于返回总价格。
只要新列表不包含任何负价格 setter 就会用新的列表替换列表在这种情况下setter 应该抛出 InvalidPriceException。
答案
class InvalidPriceException {}class ShoppingCart {Listdouble _prices [];double get total _prices.fold(0, (e, t) e t);set prices(Listdouble value) {if (value.any((p) p 0)) {throw InvalidPriceException();}_prices value;}
}