标题：object
简介
对象object是一些相关的变量和方法的软件集。软件对象经常用于模仿现实世界中我们身边的一些对象。对象是理解面向对象技术的关键。你在学习之前可以看看现实生活中的对象，比如狗、桌子、电视、自行车等等。你可以发现现实世界中的对象有两个共同特征：它们都有状态和行为。比如狗有自己的状态（比如名字、颜色、生育以及饥饿等等）和行为（比如摇尾巴等等）。同样自行车也有自己的状态（比如当前档位、两个轮子等等）和行为（比如刹车、加速、减速以及改变档位等等）。
软件对象
软件对象实际上是现实世界对象的造型，因为它同样有状态和行为。一个软件对象利用一个或者多个变量来维持它的状态。变量是由用户标识符来命名的数据项。软件对象用它的方法来执行它的行为。方法是跟对象有关联的函数（子程序）。
应用
你可以利用软件对象来代表现实世界中的对象。你可能想用一个动画程序来代表现实世界中的狗，或者用可以控制电子自行车的程序来代表现实世界的自行车。同样你可以使用软件对象来造型抽象的概念，比如，事件是一个用在GUI窗口系统的公共对象，它可以代表用户按下鼠标按钮或者键盘上的按键的反应。
如图1是一个软件对象的公共可视代表。  软件对象的公共可视代表软件对象的状态和行为都可以用在对象中的变量和方法来表达。构造现实世界的自行车的软件对象要有指示自行车的当前状态的变量：速度为20mps，它的当前档位为第三档。这些变量就是我们熟知的实例变量，因为它们包含了用于特殊自行车对象的状态，并且在面向对象技术中，特殊的对象称为实例。如图2所示，是作为软件对象的自行车造型。  软件对象的自行车造型除了变量，软件自行车同样有用于刹车、改变踏板步调以及改变档位的方法。这些方法就是熟知的实例方法因为它们检查或者改变特殊自行车实例的状态。
以上的对象图显示了对象的变量组成了圆心部分。方法处在变量的四周并且在程序中从其它对象隐藏了对象的核心。用保护方法的方法来包装对象的变量称为封装。这个对象图就是对象理想的表示法，也是面向对象系统设计者努力的最后目标。然而这并不是全部的内容。通常，出于某种现实的理由，对象可能暴露它的一些变量或者隐藏一些方法。在JAVA编程语言中，一个对象可以为变量和方法指定四种访问等级中的一种。这个访问等级决定哪个对象和类可以访问变量或者方法。
软件集的好处
总述在JAVA中访问变量和方法可以转换为控制访问类的成员函数。封装相关的变量和方法到一个简洁的软件集是一个简单而且强有力的方法。模块性对象的源代码可以独立于其它的对象源代码来进行编写和维护。同样，对象可以很容易地在系统中传递。你可以将你的自行车对象给其它的对象，它仍然可以正常工作。信息隐藏一个对象如果有一个公共的界面，那么其它的对象就可以与之进行通讯。这个对象可以维护私人的信息和方法，它可以在任何时候被改变而不影响依耐于它的其它对象。所以你不必理解自行车中齿轮的机理就可以使用它。
为什么创建对象
自定义对象本身不会自动地在代码中加入新功能。通常情况下，为达到相同的效果，可以使用另一种不涉及创建对象的方法。这些对象所能做的就是使复杂的操作看起来更简单，使复杂的应用程序更加具有自我说明性和可维护性，使需要几小时才能编完代码的程序对您自己和其他程序员而言可重复利用性更强。实际上，创建自定义对象是一种将代码包装起来供其他 Microsoft® Visual Basic® for Applications (VBA) 程序员使用的完美方法，因为与其指出如何调用您的代码，不如使他们能象使用任何内置对象一样使用您的自定义对象。 您可以创建完整的自定义对象模型，这些模型在后台有复杂的代码，但显示给程序员的应只是相对简单和直观的对象语法。事实上，这就是所有 Microsoft® Office 和 VBA 对象模型为您所做的一切，它们把复杂的操作包装在易于使用的对象、方法、属性和事件中。例如，当您将 Microsoft® Excel 对象的 Visible 属性设为 False 时,不必担心 VBA、Excel 和 Windows 如何协作以隐藏该对象。您可以把精力集中在创建应用程序这一更高目标上[1]
简单性和可重复利用性自然要有代价。创建自定义对象和对象模型需要一种思考方法，这种方法比起您在 VBA 中已经习惯的那种编程思考方法是不同的，甚至可能是革命性的不同。掌握它会花一些时间。但从长远来看，用对象编代码可以提高效率，磨练设计技巧，更容易重复利用代码，从而能使您成为更好的程序员。
HTML <object> 标签
自定义对象本身不会自动地在代码中加入新功能。通常情况下，为达到相同的效果，可以使用另一种不涉及创建对象的方法。这些对象所能做的就是使复杂的操作看起来更简单，使复杂的应用程序更加具有自我说明性和可维护性，使需要几小时才能编完代码的程序对您自己和其他程序员而言可重复利用性更强。实际上，创建自定义对象是一种将代码包装起来供其他 Microsoft® Visual Basic® for Applications (VBA) 程序员使用的完美方法，因为与其指出如何调用您的代码，不如使他们能象使用任何内置对象一样使用您的自定义对象。 您可以创建完整的自定义对象模型，这些模型在后台有复杂的代码，但显示给程序员的应只是相对简单和直观的对象语法。事实上，这就是所有 Microsoft® Office 和 VBA 对象模型为您所做的一切，它们把复杂的操作包装在易于使用的对象、方法、属性和事件中。例如，当您将 Microsoft® Excel 对象的 Visible 属性设为 False 时,不必担心 VBA、Excel 和 Windows 如何协作以隐藏该对象。您可以把精力集中在创建应用程序这一更高目标上。 
简单性和可重复利用性自然要有代价。创建自定义对象和对象模型需要一种思考方法，这种方法比起您在 VBA 中已经习惯的那种编程思考方法是不同的，甚至可能是革命性的不同。掌握它会花一些时间。但从长远来看，用对象编代码可以提高效率，磨练设计技巧，更容易重复利用代码，从而能使您成为更好的程序员。
定义和用法
定义一个嵌入的对象。请使用此元素向您的 XHTML 页面添加多媒体。此元素允许您规定插入 HTML 文档中的对象的数据和参数，以及可用来显示和操作数据的代码。[1]​
<object> 标签用于包含对象，比如图像、音频、视频、Java applets、ActiveX、PDF 以及 Flash。
object 的初衷是取代 img 和 applet 元素。不过由于漏洞以及缺乏浏览器支持，这一点并未实现。
浏览器的对象支持有赖于对象类型。不幸的是，主流浏览器都使用不同的代码来加载相同的对象类型。
而幸运的是，object 对象提供了解决方案。如果未显示 object 元素，就会执行位于 <object> 和 </object> 之间的代码。通过这种方式，我们能够嵌套多个 object 元素（每个对应一个浏览器）。
实例
向 HTML 代码添加一个对象：
<object classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628" id="Slider1" width="100" height="50"> 
<param name="BorderStyle" value="1" /> 
<param name="MousePointer" value="0" /> 
<param name="Enabled" value="1" /> 
<param name="Min" value="0" /> 
<param name="Max" value="10" /></object>
浏览器支持
几乎所有主流浏览器都拥有部分对 <object> 标签的支持。
提示
注释：<param> 标签定义用于对象的 run-time 设置。
注释：不要对图像使用 <object> 标签，请使用 <img> 标签代替。
可选的属性
align
leftrighttopbottom
定义围绕该对象的文本对齐方式。
TF
archive
URL
由空格分隔的指向档案文件的 URL 列表。这些档案文件包含了与对象相关的资源。
STF
border
pixels
定义对象周围的边框。
TF
classid
class ID
定义嵌入 Windows Registry 中或某个 URL 中的类的 ID 值，此属性可用来指定浏览器中包含的对象的位置，通常是一个 Java 类。
STF
codebase
URL
定义在何处可找到对象所需的代码，提供一个基准 URL。
STF
codetype
MIME type
通过 classid 属性所引用的代码的 MIME 类型。
STF
data
URL
定义引用对象数据的 URL。如果有需要对象处理的数据文件，要用 data 属性来指定这些数据文件。
STF
declare
declare
可定义此对象仅可被声明，但不能被创建或例示，直到此对象得到应用为止。
STF
height
pixels
定义对象的高度。
STF
hspace
pixels
定义对象周围水平方向的空白。
TF
name
unique_name
为对象定义唯一的名称（以便在脚本中使用）。
STF
standby
text
定义当对象正在加载时所显示的文本。
STF
type
MIME_type
定义被规定在 data 属性中指定的文件中出现的数据的 MIME 类型。
STF
usemap
URL
规定与对象一同使用的客户端图像映射的 URL。
STF
vspace
pixels
定义对象的垂直方向的空白。
TF
width
pixels
定义对象的宽度。
STF

标准属性
id, class, title, style, dir, lang, xml:lang
事件属性
accesskey, tabindex, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup