Attribute和Property

简介: 有时很容易对Attribute和Property混淆,因为中文翻译都是“属性”来解释的。其实这两个表达的不是一个层面的东西。 Property属于面向对象理论范畴,在使用面向对象思想编程的时候,常常需要对客观事物进行抽象,再把抽象出来的结果封装成类,类中用来表示事物状态的成员就是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》(作者刘铁锰)

 

相关文章
|
前端开发 Android开发
Jetpack Compose 学习指南(二)
Jetpack Compose 学习指南(二)
269 0
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
10月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
288 1
|
设计模式 存储 缓存
单例模式与工厂方法模式之间的差异
【8月更文挑战第24天】
169 0
|
JavaScript Java 测试技术
基于Java的教务管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的教务管理系统的设计与实现(源码+lw+部署文档+讲解等)
190 0
锁屏组件新能力实现问题之在Activity中锁屏状态下显示悬浮窗的实现如何解决
锁屏组件新能力实现问题之在Activity中锁屏状态下显示悬浮窗的实现如何解决
245 0
|
JavaScript 前端开发 安全
TypeScript的主要优势有哪些?
【6月更文挑战第1天】TypeScript的主要优势有哪些?
305 9
|
Android开发
Android仿高德首页三段式滑动
Android仿高德首页三段式滑动
305 0
|
存储 关系型数据库 MySQL
MySQL中常见的存储引擎类型
【2月更文挑战第18天】
328 7

热门文章

最新文章