C 属性(Property)
属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field) 。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。
属性(Property)不会确定存储位置。相反,它们具有可读写或计算它们值的 访问器(accessors) 。
例如,有一个名为 Student 的类,带有 age、name 和 code 的私有域。我们不能在类的范围以外直接访问这些域,但是我们可以拥有访问这些私有域的属性。
访问器(Accessors)
属性(Property)的访问器(accessor) 包含有助于获取(读取或计算)或设置(写入)属性的可执行语句。访问器(accessor)声明可包含一个 get 访问器、一个 set 访问器,或者同时包含二者。例如:
// 声明类型为 string 的 Code 属性
实例
下面的实例演示了属性(Property)的用法:
using System;
当上面的代码被编译和执行时,它会产生下列结果:
Student Info: Code = 001, Name = Zara, Age = 9
抽象属性(Abstract Properties)
抽象类可拥有抽象属性,这些属性应在派生类中被实现。下面的程序说明了这点:
using System;
当上面的代码被编译和执行时,它会产生下列结果:
Student Info: Code = 001, Name = Zara, Age = 9
属性property
1.1 属性property
面试题:
1、 你对面向对象的理解
2、 面向对象的特征是什么
3、 对封装的理解?
封装,类本身就是一个封装,封装了属性和方法。方法也是封装,对一些业务逻辑的封装。私有也是封装,将一些方法和属性私有化,对外提供可访问的接口。
4、 对继承的理解
将共性的内容放在父类中,子类只需要关注自己特有的内容,共性的继承过来就行了。
这样简化开发,符合逻辑习惯,利于扩展。
5、 多态的理解
多态,一个对象在不同的情况下显示不同的形态。在python中因为是弱类型语言,对类型没有限定,所有python中不完全支持多态,但是多态的思想呢,python也是能体现的。
1.1.1 私有属性添加getter和setter方法
classMoney(object):
def__init__(self):
self.__money = 0
defgetMoney(self):
return self.__money
defsetMoney(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型数字")
1.1.2 使用property升级getter和setter方法
classMoney(object):
def__init__(self):
self.__money = 0
defgetMoney(self):
return self.__money
defsetMoney(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型数字")
money = property(getMoney, setMoney)
运行结果:
In [1]: from get_set import Money
In [2]:
In [2]: a = Money()
In [3]:
In [3]: a.money
Out[3]: 0
In [4]: a.money = 100
In [5]: a.money
Out[5]: 100
In [6]: a.getMoney()
Out[6]: 100
1.1.3 使用property取代getter和setter方法
@property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用
· 将方法转换为只读
· 重新实现一个属性的设置和读取方法,可做边界判定
classMoney(object):
def__init__(self):
self.__money = 0
@property
defmoney(self):
return self.__money
@money.setter
defmoney(self, value):
if isinstance(value, int):
self.__money = value
else:
print("error:不是整型数字")
运行结果
In [3]: a = Money()
In [4]:
In [4]:
In [4]: a.money
Out[4]: 0
In [5]: a.money = 100
In [6]: a.money
Out[6]: 100
相关问答
JAVA怎么把HTML转换XML格式-懂得
得到了HtmlDocument的实例之后,就可以用HtmlDocument的DocumentNode属性,这是整个HTML文档的根节点,它本身也是一个HtmlNode,然后就可以利用HtmlNod.....
apropertypdefinedforallelementsofasetXisusuallydefined...
[最佳回答]数学属性在数学术语中,集合X中所有元素的属性p通常定义为函数p:X→{真,假},每当属性取值时就为真;或者等价地,相应于X子集的p的取值;也就是说,...
poverty的英英释义看不懂关于property有这么一个解释:特性;...
首先,【存在】?你的定语从句分析还可以,不过那里写的不是behaves吗?怎么成【存在】了?你再翻译一下这个定语从句.其次,inparticular的确有“尤其...