诸如swift
C#
(其他请补充)带有 get set 的关键字 (Swift称为计算属性)。
其目的是在取值和赋值的时候执行里面的代码。
但如果目的仅仅是这样,为什么不直接使用方法(Method)的操作方式,而要属性(Properties)的操作方式?
比如 java
的get set 就是用方法模拟的(java 没有实际的get set 关键字):
class Person{
private String name;
public String getName(){return this.name;}
public void setName(String name){this.name = name;}
}
//所以,在赋值的时候是使用
person.getName() / person.setName(..)进行操作
而诸如拥有get set 特性的语言(swift
c#
)则是直接使用 get 和 set 关键字修饰成一个属性swift
:
class Person{
private var _name:string?
name{
get ..
set ...
}
}
//使用时
person.name = ...
//or
var name:string? = person.name
上述两种有什么主要区别吗?或者说分别的好处是什么?为什么要有get set 这种概念?
说道用处和设计目的之类的,java 和 swift 其实几乎一样。
至于为什么 swift 设计成这样,我只能说是遗传了大多
CX
(代表众多基于C的面向对象语言) 的后遗症,大多数基于C的面向对象语言都是这样采用一种与众不同的方式去设计 get set 方法,而没有像 Java 一样指定一套简单通用的标准(虽然 Java 里定义 get set 繁琐了一些,但是其基础语法确实非常干净利落的)。而为什么大多数基于C的面向对象语言都设计成这种与众不同的样式,我估计和 C 语言的 宏 这个概念有很大关系,后来者设计新的 C 语言时,大概都受其影响,所有设计的结果也都相似。