Attribute和Property

简介:

有时很容易对Attribute和Property混淆,因为中文翻译都是“属性”来解释的。其实这两个表达的不是一个层面的东西。

Property属于面向对象理论范畴,在使用面向对象思想编程的时候,常常需要对客观事物进行抽象,再把抽象出来的结果封装成类,类中用来表示事物状态的成员就是Property译为“属性”。比如要写一个模拟赛车的游戏。现实的汽车会有很多的数据:长度,宽度,高度,重量,速度等有几个数据。同时,还会把汽车“加速”,“减速”等一些行为也提取出来并用算法模拟,这个过程就是抽象(结果是Car这个类)。显然,Car.Length,Car.Height,Car.Speed等表达的是汽车当前处的状态,而Car.Accelerate(),Car.Break()表达的是汽车能做什么。因此,总结一句话:Property(属性)是针对对象而言的。

Attribute则是编程语言文法层面的东西。比如有两个同类的语法元素A和B,为了表示A与B不完全相同或者A与B在用法上有些区别,这时候要针对A和B加一些Attribute。也就是说,Attribute只与语言层面上的东西相关,与抽象出来的对象没什么关系。因为Attribute表示“区分”的,所以把它译为“特征”。

因为XAML是用来在UI控制上绘制控件,而控件本身就是面向对象抽象的产物,所以XAML标签的Attribute里面就有一大部分与控件对象的Property互相对应的。当然,这还意味着XAML标签还有一些Attribute多于它所代表对象的Property。

读书笔记《深入浅出WPF》(作者刘铁锰)

本文转自Rt-张雪飞博客园博客,原文链接http://www.cnblogs.com/mszhangxuefei/p/wpf-1.html如需转载请自行联系原作者


张雪飞

相关文章
|
9月前
|
Java 数据库连接 mybatis
There is no getter for property named ‘null‘ in ‘class
There is no getter for property named ‘null‘ in ‘class
114 0
There is no getter for property named ‘null‘ in ‘class
|
11月前
|
NoSQL Java Redis
一日一技:在什么情况下使用@property比较好?
一日一技:在什么情况下使用@property比较好?
60 0
|
JavaScript 前端开发
Property ngOnInit does not exist on type VisibleFocusDirective
Property ngOnInit does not exist on type VisibleFocusDirective
Property ngOnInit does not exist on type VisibleFocusDirective
When will the reference ATTRIBUTE_REF of an BOL entity be cleared
When will the reference ATTRIBUTE_REF of an BOL entity be cleared
When will the reference ATTRIBUTE_REF of an BOL entity be cleared
|
TensorFlow 算法框架/工具
has no attribute ‘swish‘
has no attribute ‘swish‘
137 0
|
C语言 编译器 C++