﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Kino's Blog-随笔分类-编程语言</title><link>http://www.blogjava.net/kinoviti/category/5123.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:12:12 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:12:12 GMT</pubDate><ttl>60</ttl><item><title>AJAX Web Tree 构建方案及实现思想</title><link>http://www.blogjava.net/kinoviti/archive/2006/01/27/29304.html</link><dc:creator>-=Kino=-</dc:creator><author>-=Kino=-</author><pubDate>Fri, 27 Jan 2006 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/kinoviti/archive/2006/01/27/29304.html</guid><wfw:comment>http://www.blogjava.net/kinoviti/comments/29304.html</wfw:comment><comments>http://www.blogjava.net/kinoviti/archive/2006/01/27/29304.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/kinoviti/comments/commentRss/29304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kinoviti/services/trackbacks/29304.html</trackback:ping><description><![CDATA[<P>***************************************<BR><SPAN style="FONT-FAMILY: 宋体">关键字：AJAX,Tree,Struts，DOM</SPAN><SPAN lang=EN-US><BR></SPAN><SPAN style="FONT-FAMILY: 宋体">难易度：</SPAN> 中<BR><SPAN style="FONT-FAMILY: 宋体">软件版本：struts 1.2.8</SPAN><SPAN lang=EN-US><BR>时间：2006-01-27<BR>Author：Kino<BR>***************************************</SPAN><BR><BR>前阵子写了一个小代码处理AJAX下WebTree的构建，其中碰到了一些问题，也有一些想法，现在说出来希望大家一起看看，如果案由问题请不吝赐教，本人不胜感激啊。<BR><BR><STRONG>背景：<BR></STRONG>这次因为是加载在Struts上的开发，Web页面上的Tree作AJAX处理，因为有Node的增删改操作。Server端因为要和WebService连接，所以不做Cache。<BR><BR><STRONG>解决案：<BR></STRONG>1。使用Polling调用AJAX定期更新Tree。<BR>2。AJAX访问的地址是一个Action（例：createtree.do）。用来返回Tree模型或者错误消息（国际化）。<BR>3。Browser解析XML的TreeModel。<BR>4。在Browser比较新旧2个TreeModel，完成选中状态的继承。<BR>5。CSS渲染TreeNode。<BR><BR>以上是简单的思路。传统的AJAX应该是尽量减少XMl传输量，迫于没有Cache的缘故，并且WS给我的节点并不能简单的得到父子关系。我选择了，每次Polling更新整棵树的方案。性能未测。<BR><BR>我这次在web server 端构建Tree时直接用深度优先转换成XML。XMl中数据的先后顺序决定了Tree从父到子，从兄到弟的深度优先关系，indent决定了深度（也就是缩进）。这样我从Server端传入的也就成了一个标准的Tree显示Model。格式定义如下。<BR>&nbsp; *&nbsp;Gobal Master Tree DTD <BR>&nbsp;*&nbsp;&amp;lt!ELEMENT tree (tree*)&amp;gt<BR>&nbsp;*&nbsp;&amp;lt!ATTLIST tree<BR>&nbsp;*&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;CDATA&nbsp;#REQUIRED&nbsp;LoctionInfo's toString<BR>&nbsp;*&nbsp;&nbsp;indent&nbsp;&nbsp;CDATA&nbsp;#REQUIRED&nbsp;Tree's Level<BR>&nbsp;*&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA&nbsp;&nbsp; #REQUIRED&nbsp;label in html<BR>&nbsp;*&nbsp;&nbsp;tooltip&nbsp;&nbsp;&nbsp;&nbsp; CDATA&nbsp;&nbsp; #IMPLIED&nbsp;title in html<BR>&nbsp;*&nbsp;&nbsp;action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA&nbsp;&nbsp; #IMPLIED&nbsp;href in html<BR>&nbsp;*&nbsp;&nbsp;icon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA&nbsp;&nbsp; #IMPLIED&nbsp;close icon with the node status<BR>&nbsp;*&nbsp;&nbsp;openicon&nbsp;&nbsp;&nbsp; CDATA&nbsp;&nbsp; #IMPLIED&nbsp;open icon with the node status<BR>&nbsp;*&nbsp;&nbsp;open&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA&nbsp;&nbsp; #IMPLIED&amp;gt&nbsp;node's open states ,default is false in server.<BR>&nbsp;*&nbsp;&nbsp;target&nbsp;&nbsp;CDATA&nbsp;#IMPLIED&nbsp;node's open target<BR>&nbsp;*<BR>&lt;span id="maintree"&gt;<BR>&nbsp;&lt;tree id="Ajax" indent=0 text="Root" tooltip="Root" action="/logout.do" icon="" openicon= "" open="false"/&gt;<BR>&nbsp;&lt;tree id="110" indent=1 text="Node 1" tooltip="Node 1" action="/logout.do" icon="" openicon= "" open="false"/&gt;<BR>&nbsp;&lt;tree id="120" indent=2 text="Node 2" tooltip="Node 2" action="/logout.do" icon="" openicon= "" open="false"/&gt;<BR>&nbsp;&lt;tree id="12580" indent=2 text="Node 3" tooltip="Node 3" action="/logout.do" icon="" openicon= "" open="false"/&gt;<BR>&nbsp;&lt;tree id="user" indent=1 text="Node 4" tooltip="Node 4" action="/logout.do" icon="" openicon= "" open="false"/&gt;<BR>&lt;/span&gt;<BR><BR>上边的 Tree显示出来如下<BR>Root<BR>&nbsp;│<BR>&nbsp;├Node 1<BR>&nbsp;│&nbsp;&nbsp;&nbsp; │<BR>&nbsp;│&nbsp;&nbsp;&nbsp; ├Node 2<BR>&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;└Node 3<BR>&nbsp;└Node 4<BR>indent&nbsp;&nbsp; 就是缩进。<BR>数据的先后顺序就是深度优先的遍历顺序。<BR></P>
<P>这样的数据到了Browser，会先被转成一个对象数组。<BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">&nbsp;1</SPAN><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Tree&nbsp;Node&nbsp;object</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;2</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;This&nbsp;function&nbsp;creates&nbsp;a&nbsp;node&nbsp;in&nbsp;the&nbsp;tree&nbsp;with&nbsp;the&nbsp;following&nbsp;arguments:</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;3</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;sId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;The&nbsp;node's&nbsp;index&nbsp;within&nbsp;the&nbsp;global&nbsp;nodes_array</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;4</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;iIndent&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;The&nbsp;level&nbsp;within&nbsp;the&nbsp;tree&nbsp;hierarchy&nbsp;(0&nbsp;=&nbsp;top)</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;5</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;sText&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;The&nbsp;text&nbsp;displayed&nbsp;in&nbsp;the&nbsp;tree&nbsp;for&nbsp;this&nbsp;node</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;6</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;sTooltip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;the&nbsp;tool&nbsp;tip</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;7</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;oAction&nbsp;&nbsp;&nbsp;-&nbsp;For&nbsp;a&nbsp;document,&nbsp;the&nbsp;address&nbsp;it&nbsp;will&nbsp;display&nbsp;when&nbsp;clicked</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;8</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;sIcon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;the&nbsp;node's&nbsp;icon&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;9</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;sIconOpen&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;the&nbsp;node's&nbsp;icon&nbsp;state</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bOpen&nbsp;-&nbsp;true&nbsp;&nbsp;false</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">11</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">function</SPAN><SPAN style="COLOR: #000000">&nbsp;GMTreeNode(sId,iIndent,sText,sTooltip,sAction,sIcon,sIconOpen,bOpen,sTarget)<BR></SPAN><SPAN style="COLOR: #008080">12</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_567_1052_Open_Image onclick="this.style.display='none'; Codehighlighter1_567_1052_Open_Text.style.display='none'; Codehighlighter1_567_1052_Closed_Image.style.display='inline'; Codehighlighter1_567_1052_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_567_1052_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_567_1052_Closed_Text.style.display='none'; Codehighlighter1_567_1052_Open_Image.style.display='inline'; Codehighlighter1_567_1052_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_567_1052_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_567_1052_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">13</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(sId)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.id&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sId;<BR></SPAN><SPAN style="COLOR: #008080">14</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(iIndent)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.indent&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;iIndent;<BR></SPAN><SPAN style="COLOR: #008080">15</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(sText)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.text&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sText;<BR></SPAN><SPAN style="COLOR: #008080">16</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(sAction)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.action&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sAction;<BR></SPAN><SPAN style="COLOR: #008080">17</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(sTooltip)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.tooltip&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sTooltip;<BR></SPAN><SPAN style="COLOR: #008080">18</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(sIcon)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.icon&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sIcon;<BR></SPAN><SPAN style="COLOR: #008080">19</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(sIconOpen)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.iconopen&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sIconOpen;<BR></SPAN><SPAN style="COLOR: #008080">20</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(bOpen)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.open&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;bOpen;<BR></SPAN><SPAN style="COLOR: #008080">21</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(sTarget)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.target&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sTarget;<BR></SPAN><SPAN style="COLOR: #008080">22</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">23</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;//alert(this.id&nbsp;+&nbsp;"&nbsp;&nbsp;"&nbsp;+&nbsp;this.indent&nbsp;+&nbsp;"&nbsp;&nbsp;"&nbsp;+&nbsp;this.text&nbsp;+&nbsp;"&nbsp;&nbsp;"&nbsp;+&nbsp;this.action&nbsp;+&nbsp;"&nbsp;&nbsp;"&nbsp;+&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">24</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;this.tooltip&nbsp;+&nbsp;"&nbsp;&nbsp;"&nbsp;+&nbsp;this.icon&nbsp;+&nbsp;"&nbsp;&nbsp;"&nbsp;+&nbsp;this.iconopen&nbsp;+&nbsp;"&nbsp;&nbsp;"&nbsp;+&nbsp;this.open);</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">25</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN></DIV><BR>然后会和正在显示的Tree数组 进行一个 比较，用于写入展开状态，代码如下：<BR>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">&nbsp;1</SPAN><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">///////////////////////////////</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;2</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;Compare&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;3</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;compare&nbsp;maintree&nbsp;with&nbsp;maintree.&nbsp;and&nbsp;copy&nbsp;maintree&nbsp;to&nbsp;maintree</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;4</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>//</SPAN><SPAN style="COLOR: #008000">///////////////////////////////</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;5</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">function</SPAN><SPAN style="COLOR: #000000">&nbsp;compareTreeModel()<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;6</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_176_687_Open_Image onclick="this.style.display='none'; Codehighlighter1_176_687_Open_Text.style.display='none'; Codehighlighter1_176_687_Closed_Image.style.display='inline'; Codehighlighter1_176_687_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_176_687_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_176_687_Closed_Text.style.display='none'; Codehighlighter1_176_687_Open_Image.style.display='inline'; Codehighlighter1_176_687_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_176_687_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_176_687_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;7</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">alert("I&nbsp;am&nbsp;here&nbsp;in&nbsp;compareTreeModel");</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;8</SPAN><SPAN style="COLOR: #008000"><IMG id=Codehighlighter1_247_295_Open_Image onclick="this.style.display='none'; Codehighlighter1_247_295_Open_Text.style.display='none'; Codehighlighter1_247_295_Closed_Image.style.display='inline'; Codehighlighter1_247_295_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_247_295_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_247_295_Closed_Text.style.display='none'; Codehighlighter1_247_295_Open_Image.style.display='inline'; Codehighlighter1_247_295_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(ajaxtree.length&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_247_295_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_247_295_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;9</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ajaxtree&nbsp;is&nbsp;null</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">TODO</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">11</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">12</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">13</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_325_392_Open_Image onclick="this.style.display='none'; Codehighlighter1_325_392_Open_Text.style.display='none'; Codehighlighter1_325_392_Closed_Image.style.display='inline'; Codehighlighter1_325_392_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_325_392_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_325_392_Closed_Text.style.display='none'; Codehighlighter1_325_392_Open_Image.style.display='inline'; Codehighlighter1_325_392_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(maintree.length&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_325_392_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_325_392_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">14</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">alert("maintree&nbsp;is&nbsp;null");</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">15</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maintree&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;ajaxtree;<BR></SPAN><SPAN style="COLOR: #008080">16</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">17</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">18</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">compare&nbsp;start</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">19</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">var&nbsp;maxlen&nbsp;=&nbsp;Math.max(ajaxtree.length,maintree.length);</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">20</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">var</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">ajaxtree.length;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)<BR></SPAN><SPAN style="COLOR: #008080">21</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_507_659_Open_Image onclick="this.style.display='none'; Codehighlighter1_507_659_Open_Text.style.display='none'; Codehighlighter1_507_659_Closed_Image.style.display='inline'; Codehighlighter1_507_659_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_507_659_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_507_659_Closed_Text.style.display='none'; Codehighlighter1_507_659_Open_Image.style.display='inline'; Codehighlighter1_507_659_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_507_659_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_507_659_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">22</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">var</SPAN><SPAN style="COLOR: #000000">&nbsp;j</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;j</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">maintree.length;j</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)<BR></SPAN><SPAN style="COLOR: #008080">23</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_548_655_Open_Image onclick="this.style.display='none'; Codehighlighter1_548_655_Open_Text.style.display='none'; Codehighlighter1_548_655_Closed_Image.style.display='inline'; Codehighlighter1_548_655_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_548_655_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_548_655_Closed_Text.style.display='none'; Codehighlighter1_548_655_Open_Image.style.display='inline'; Codehighlighter1_548_655_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_548_655_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_548_655_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">24</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(ajaxtree[i].id&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;maintree[j].id)<BR></SPAN><SPAN style="COLOR: #008080">25</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_594_651_Open_Image onclick="this.style.display='none'; Codehighlighter1_594_651_Open_Text.style.display='none'; Codehighlighter1_594_651_Closed_Image.style.display='inline'; Codehighlighter1_594_651_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_594_651_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_594_651_Closed_Text.style.display='none'; Codehighlighter1_594_651_Open_Image.style.display='inline'; Codehighlighter1_594_651_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_594_651_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_594_651_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">26</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajaxtree[i].open&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;maintree[j].open;<BR></SPAN><SPAN style="COLOR: #008080">27</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">28</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">29</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">30</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">31</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">32</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;maintree&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;ajaxtree;<BR></SPAN><SPAN style="COLOR: #008080">33</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">34</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>maintree 就是正在显示的 Tree，ajaxtree是刚得到的新Tree。2个对象都是TreeNode的数组。而TreeNode对象的Open属性即记录了节点的展开状态。那么这里就对这个节点状态进行“移植”，完毕后，把新Tree模型交付显示方法，也就是ToHtml方法。<BR><BR>转换Html部分算是一个比较容易出bug的危险点。<BR><BR>首先分析一下，生成的代码是什么样子的。<BR>这里仍然用上边的那棵树作例子。<BR>生成的DOM结构应该是<BR>&lt;div 父&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;div&nbsp; 收缩&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;img&nbsp; 折线&nbsp; /&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;img&nbsp;&nbsp;图标 /&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;a 节点动作&gt;节点Label&lt;/a&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;div 子&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ....递归的构造<BR>&nbsp;&nbsp;&nbsp; &lt;/div 子&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/div 收缩&gt;<BR>&lt;/div 父&gt;<BR><BR>其次&nbsp;对于这种并不直接含有父子关系的节点首先要判明一个节点的子 和 兄弟，然后用递归解决。<BR>递归的思路如下深度优先：<BR>function toHtml(节点index)<BR>{<BR>&nbsp;&nbsp; var child_html；<BR>&nbsp;&nbsp; if 这个节点有子<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; Loop子节点<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; child_html[i] = toHtml(子节点index)；<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; i++；访问下一个子节点<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp; var 所有子节点Html模块 = &lt;div 收缩&gt;&nbsp;&nbsp; child_html.join("") &lt;/div&gt;<BR><BR>&nbsp;&nbsp; var 本节点Html模块 = &lt;div 本节点&gt;&lt;div 收缩&gt;&lt;img &gt;&lt;img&nbsp;&nbsp;图标 /&gt;&lt;a 节点动作&gt;节点Label&lt;/a&gt;所有子节点Html模块&lt;/div 收缩&gt;&lt;/div 本节点&gt;;<BR><BR>&nbsp;&nbsp; return&nbsp; 本节点Html模块;<BR>}<BR><BR>树就构建好了。<BR><BR>作为显示，使用了CSS的<BR>background-repeat:&nbsp;repeat-y;<BR>&nbsp;background-image:&nbsp;url("../images/tree/I.png") !important;<BR>&nbsp;background-position-y:&nbsp;1px !important;&nbsp;/* IE only */<BR><BR>还有padding-left作Div的向右偏移，默认的偏移量是19个像素点，然后根据Tree显示模型的indent相乘就ok了。<BR><BR>思路就是这些。希望能对 朋友们有所帮助。<BR>欢迎讨论。<BR><img src ="http://www.blogjava.net/kinoviti/aggbug/29304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kinoviti/" target="_blank">-=Kino=-</a> 2006-01-27 16:42 <a href="http://www.blogjava.net/kinoviti/archive/2006/01/27/29304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#与Java（一）</title><link>http://www.blogjava.net/kinoviti/archive/2005/11/11/19257.html</link><dc:creator>-=Kino=-</dc:creator><author>-=Kino=-</author><pubDate>Fri, 11 Nov 2005 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/kinoviti/archive/2005/11/11/19257.html</guid><wfw:comment>http://www.blogjava.net/kinoviti/comments/19257.html</wfw:comment><comments>http://www.blogjava.net/kinoviti/archive/2005/11/11/19257.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/kinoviti/comments/commentRss/19257.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kinoviti/services/trackbacks/19257.html</trackback:ping><description><![CDATA[<P align=left><FONT size=6><STRONG>C#与Java（一）</STRONG></FONT><BR><BR><BR>************************************************<BR>关键字：继承<BR>难易度：易<IMG height=20 src="http://www.blogjava.net/Emoticons/QQ/14.gif" width=20 border=0><BR>************************************************<BR><BR><BR>最近因为工作需要开展基于C#的研发。我在这里也就写一点作为Java程序员对于C#的部分感想吧。毕竟能力有限，请各位高手多多点拨。<BR><BR>1.1实现的继承<BR><BR>C#和Java一样不能继承private。但是C++可以在继承中明确指出要继承共有的还是私有的。如下：<BR><BR>这个是C#的继承书写方法，作为基类的CSharpBaseClass并没有限定符。</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">1</SPAN><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;CSharpClass&nbsp;：CSharpBaseClass<BR></SPAN><SPAN style="COLOR: #008080">2</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_35_45_Open_Image onclick="this.style.display='none'; Codehighlighter1_35_45_Open_Text.style.display='none'; Codehighlighter1_35_45_Closed_Image.style.display='inline'; Codehighlighter1_35_45_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_35_45_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_45_Closed_Text.style.display='none'; Codehighlighter1_35_45_Open_Image.style.display='inline'; Codehighlighter1_35_45_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_35_45_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_35_45_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">3</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">成员</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">4</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN></DIV>
<P>这个是Java了，熟悉吧。</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Class&nbsp;JavaClass&nbsp;</SPAN><SPAN style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000">&nbsp;JavaBaseClass<BR><IMG id=Codehighlighter1_45_54_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_54_Open_Text.style.display='none'; Codehighlighter1_45_54_Closed_Image.style.display='inline'; Codehighlighter1_45_54_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_45_54_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_54_Closed_Text.style.display='none'; Codehighlighter1_45_54_Open_Image.style.display='inline'; Codehighlighter1_45_54_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_45_54_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_45_54_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">成员</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN></DIV>
<P>C++的定义如下：</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;CPlusPlusClass:&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;CPlusPlusBaseClass<BR><IMG id=Codehighlighter1_48_58_Open_Image onclick="this.style.display='none'; Codehighlighter1_48_58_Open_Text.style.display='none'; Codehighlighter1_48_58_Closed_Image.style.display='inline'; Codehighlighter1_48_58_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_48_58_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_48_58_Closed_Text.style.display='none'; Codehighlighter1_48_58_Open_Image.style.display='inline'; Codehighlighter1_48_58_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_48_58_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_48_58_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">成员</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN></DIV>
<P>1.2虚函数<BR><BR>把一个基类函数声明为virtual，该函数就可以在任何派生类中重写了。<BR>Java的语法中没有virtual这个词，但是Java却彻彻底底的贯彻着这个概念，Java的所有函数都是虚拟的。<BR>C++的朋友可能比较熟悉这个词吧。对于这一点C#和C++是相同的。但是语法稍微有点不同，C#需要使用override类显示声明重写函数。如下例<BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;BaseClass<BR><IMG id=Codehighlighter1_16_158_Open_Image onclick="this.style.display='none'; Codehighlighter1_16_158_Open_Text.style.display='none'; Codehighlighter1_16_158_Closed_Image.style.display='inline'; Codehighlighter1_16_158_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_16_158_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_16_158_Closed_Text.style.display='none'; Codehighlighter1_16_158_Open_Image.style.display='inline'; Codehighlighter1_16_158_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_16_158_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_16_158_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">virtual</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;VirtualMethod()<BR><IMG id=Codehighlighter1_73_156_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_156_Open_Text.style.display='none'; Codehighlighter1_73_156_Closed_Image.style.display='inline'; Codehighlighter1_73_156_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_73_156_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_156_Closed_Text.style.display='none'; Codehighlighter1_73_156_Open_Image.style.display='inline'; Codehighlighter1_73_156_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_73_156_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_73_156_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">The&nbsp;virtual&nbsp;method&nbsp;in&nbsp;defined&nbsp;in&nbsp;Base&nbsp;class</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;ChildClass&nbsp;:&nbsp;BaseClass<BR><IMG id=Codehighlighter1_190_338_Open_Image onclick="this.style.display='none'; Codehighlighter1_190_338_Open_Text.style.display='none'; Codehighlighter1_190_338_Closed_Image.style.display='inline'; Codehighlighter1_190_338_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_190_338_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_190_338_Closed_Text.style.display='none'; Codehighlighter1_190_338_Open_Image.style.display='inline'; Codehighlighter1_190_338_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_190_338_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_190_338_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">override</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;VirtualMethod()<BR><IMG id=Codehighlighter1_251_336_Open_Image onclick="this.style.display='none'; Codehighlighter1_251_336_Open_Text.style.display='none'; Codehighlighter1_251_336_Closed_Image.style.display='inline'; Codehighlighter1_251_336_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_251_336_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_251_336_Closed_Text.style.display='none'; Codehighlighter1_251_336_Open_Image.style.display='inline'; Codehighlighter1_251_336_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_251_336_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_251_336_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">The&nbsp;override&nbsp;method&nbsp;in&nbsp;defined&nbsp;in&nbsp;child&nbsp;class</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P><BR><BR>1.3隐藏方法<BR>相同签名的方法在基类和子类都声明了，但方法不是vitrual。那么实际中到底哪个方法被执行，取决于引用实例的变量类型，而不是实力本身的类型。<BR>我们也不用太担心这个问题，因为C#会在编译期给出警告。<BR><BR>1.4调用积累函数的方法<BR>java中我们使用super，C#中使用base。<BR><BR>1.5抽象类和抽象函数<BR>和java一样使用abstract声明。<BR>和C++相比，C++的抽象函数被声明为纯虚函数。<BR><BR>1.6密封类和密封方法<BR>在Java中我们把它叫做final。也就是不能继承的类或不能重载的方法。</P>
<P>1.7构造函数的调用层次<BR>和Java一样，我就不多说了。这里强调一个特殊的语法格式：<BR><BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;BaseClass<BR><IMG id=Codehighlighter1_23_280_Open_Image onclick="this.style.display='none'; Codehighlighter1_23_280_Open_Text.style.display='none'; Codehighlighter1_23_280_Closed_Image.style.display='inline'; Codehighlighter1_23_280_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_23_280_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_23_280_Closed_Text.style.display='none'; Codehighlighter1_23_280_Open_Image.style.display='inline'; Codehighlighter1_23_280_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_23_280_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_23_280_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;temp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Default&nbsp;Construct</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;_flag<BR><IMG id=Codehighlighter1_88_141_Open_Image onclick="this.style.display='none'; Codehighlighter1_88_141_Open_Text.style.display='none'; Codehighlighter1_88_141_Closed_Image.style.display='inline'; Codehighlighter1_88_141_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_88_141_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_88_141_Closed_Text.style.display='none'; Codehighlighter1_88_141_Open_Image.style.display='inline'; Codehighlighter1_88_141_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_88_141_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_88_141_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_98_112_Open_Image onclick="this.style.display='none'; Codehighlighter1_98_112_Open_Text.style.display='none'; Codehighlighter1_98_112_Closed_Image.style.display='inline'; Codehighlighter1_98_112_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_98_112_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_98_112_Closed_Text.style.display='none'; Codehighlighter1_98_112_Open_Image.style.display='inline'; Codehighlighter1_98_112_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN id=Codehighlighter1_98_112_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_98_112_Open_Text><SPAN style="COLOR: #000000">{&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;temp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_122_137_Open_Image onclick="this.style.display='none'; Codehighlighter1_122_137_Open_Text.style.display='none'; Codehighlighter1_122_137_Closed_Image.style.display='inline'; Codehighlighter1_122_137_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_122_137_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_122_137_Closed_Text.style.display='none'; Codehighlighter1_122_137_Open_Image.style.display='inline'; Codehighlighter1_122_137_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN id=Codehighlighter1_122_137_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_122_137_Open_Text><SPAN style="COLOR: #000000">{&nbsp;temp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;value;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Constructor&nbsp;with&nbsp;one&nbsp;Parameter</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;BaseClass(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;f)<BR><IMG id=Codehighlighter1_258_278_Open_Image onclick="this.style.display='none'; Codehighlighter1_258_278_Open_Text.style.display='none'; Codehighlighter1_258_278_Closed_Image.style.display='inline'; Codehighlighter1_258_278_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_258_278_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_258_278_Closed_Text.style.display='none'; Codehighlighter1_258_278_Open_Image.style.display='inline'; Codehighlighter1_258_278_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_258_278_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_258_278_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;f;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;ChildClass&nbsp;:&nbsp;BaseClass<BR><IMG id=Codehighlighter1_319_1043_Open_Image onclick="this.style.display='none'; Codehighlighter1_319_1043_Open_Text.style.display='none'; Codehighlighter1_319_1043_Closed_Image.style.display='inline'; Codehighlighter1_319_1043_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_319_1043_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_319_1043_Closed_Text.style.display='none'; Codehighlighter1_319_1043_Open_Image.style.display='inline'; Codehighlighter1_319_1043_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_319_1043_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_319_1043_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_372_373_Open_Image onclick="this.style.display='none'; Codehighlighter1_372_373_Open_Text.style.display='none'; Codehighlighter1_372_373_Closed_Image.style.display='inline'; Codehighlighter1_372_373_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_372_373_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_372_373_Closed_Text.style.display='none'; Codehighlighter1_372_373_Open_Image.style.display='inline'; Codehighlighter1_372_373_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;ChildClass():</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Customized&nbsp;Construct</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_372_373_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_372_373_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_428_429_Open_Image onclick="this.style.display='none'; Codehighlighter1_428_429_Open_Text.style.display='none'; Codehighlighter1_428_429_Closed_Image.style.display='inline'; Codehighlighter1_428_429_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_428_429_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_428_429_Closed_Text.style.display='none'; Codehighlighter1_428_429_Open_Image.style.display='inline'; Codehighlighter1_428_429_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Second(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;f):</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara&nbsp;=&nbsp;1:1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_428_429_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_428_429_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_493_494_Open_Image onclick="this.style.display='none'; Codehighlighter1_493_494_Open_Text.style.display='none'; Codehighlighter1_493_494_Closed_Image.style.display='inline'; Codehighlighter1_493_494_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_493_494_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_493_494_Closed_Text.style.display='none'; Codehighlighter1_493_494_Open_Image.style.display='inline'; Codehighlighter1_493_494_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Second(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;f,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;g):</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara&nbsp;=&nbsp;1:2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_493_494_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_493_494_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;showConstructFlag()<BR><IMG id=Codehighlighter1_543_966_Open_Image onclick="this.style.display='none'; Codehighlighter1_543_966_Open_Text.style.display='none'; Codehighlighter1_543_966_Closed_Image.style.display='inline'; Codehighlighter1_543_966_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_543_966_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_543_966_Closed_Text.style.display='none'; Codehighlighter1_543_966_Open_Image.style.display='inline'; Codehighlighter1_543_966_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_543_966_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_543_966_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Second();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Show&nbsp;ConstructFlag:\n&nbsp;ChildClass():base(\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Customized&nbsp;Construct\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">_Flag);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Second(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Show&nbsp;ConstructFlag:\n&nbsp;Second(string&nbsp;f,string&nbsp;g):base(\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">:</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">_Flag);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Second(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">no&nbsp;use</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Show&nbsp;ConstructFlag:\n&nbsp;Second(string&nbsp;f,string&nbsp;g):base(\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">:</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">_Flag);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Main()<BR><IMG id=Codehighlighter1_1006_1041_Open_Image onclick="this.style.display='none'; Codehighlighter1_1006_1041_Open_Text.style.display='none'; Codehighlighter1_1006_1041_Closed_Image.style.display='inline'; Codehighlighter1_1006_1041_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1006_1041_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1006_1041_Closed_Text.style.display='none'; Codehighlighter1_1006_1041_Open_Image.style.display='inline'; Codehighlighter1_1006_1041_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1006_1041_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1006_1041_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showConstructFlag();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P>结果如预计那样 ：<BR>如果基类含有带参数的构造函数，派生类不能调用默认基类构造函数。<BR>多参数派生类构造函数，可以调用参数数目不同的基类构造函数。<BR><BR>我们一起来看看为什么这2个结论可以成立：<BR>首先，对于带参数的基类构造函数在初始化的时候会试图去调用基类默认构造函数，但在上边的基类程序里，因为只声明了带一个参数的构造函数，所以public Second(string f):base()或者public Second(string f)就不会通过编译，因为他找不到基类的默认构造函数，只能追加<SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;BaseClass(</SPAN><SPAN style="COLOR: #000000">)才会通过。这一点和JAVA是不同的，java的默认构造函数默认是不出现在代码里的。C#却一定要写出来。<BR><BR>&lt;&lt;&lt;== <FONT color=#ff0000>有错误。C#的默认构造函数体制和Java是一样的。具体如下：<BR>1。父类没有自定义构造函数的情况下，使用默认构造函数。用户可以不写出来。<BR>2。一旦父类有了自定义的构造函数，那么如果要使用无参的默认构造函数就必须要显示定义。</FONT><BR><BR><BR><BR><BR>其次，下边派生类1个参数、2个参数甚至多个参数的构造函数为什么能访问只有一个参数的基类构造函数呢？原因是，关键字this，上边的程序改写如下我想大家就明白了。<BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG id=Codehighlighter1_49_50_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_50_Open_Text.style.display='none'; Codehighlighter1_49_50_Closed_Image.style.display='inline'; Codehighlighter1_49_50_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_49_50_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_50_Closed_Text.style.display='none'; Codehighlighter1_49_50_Open_Image.style.display='inline'; Codehighlighter1_49_50_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Second(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;f):</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara&nbsp;=&nbsp;1:1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_49_50_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_49_50_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG id=Codehighlighter1_108_109_Open_Image onclick="this.style.display='none'; Codehighlighter1_108_109_Open_Text.style.display='none'; Codehighlighter1_108_109_Closed_Image.style.display='inline'; Codehighlighter1_108_109_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_108_109_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_108_109_Closed_Text.style.display='none'; Codehighlighter1_108_109_Open_Image.style.display='inline'; Codehighlighter1_108_109_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Second(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;f,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;g):</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;f,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&lt;None</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_108_109_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_108_109_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN></DIV>
<P dir=ltr style="MARGIN-RIGHT: 0px"></SPAN>2.1修饰符<BR>C#支持下边的集中修饰符：<BR>public&nbsp;，&nbsp;&nbsp; protected&nbsp;， internal&nbsp; ，private&nbsp;， protected internal<BR>同Java。internal和protected internal是.net framework新增的一个内容。根据定义。<BR>internal在同一个程序集内和public类似，不同的程序集间，public声明的类或方法仍然可用，但是internal的方法或类则被隐藏。<BR>protected internal合并了protected 和internal，但这是一种or关系，而不是and关系。protected internal成员在同一个程序集的任何代码都可见，在派生类可见。<BR><BR>2.3接口<BR>接口公约：<BR>不能实例化接口。<BR>接口不能有构造函数或字段。<BR>接口定义也不允许包含运算符重载。<BR>接口定义中还不允许声明成员上的修饰符。接口成员都是public的，不需要static也不需要virtual。<BR><BR>同Java<BR>接口可以彼此继承，其方式和类继承相同。如下：<BR><BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000">&nbsp;my.test<BR><IMG id=Codehighlighter1_18_154_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_154_Open_Text.style.display='none'; Codehighlighter1_18_154_Closed_Image.style.display='inline'; Codehighlighter1_18_154_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_18_154_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_154_Closed_Text.style.display='none'; Codehighlighter1_18_154_Open_Image.style.display='inline'; Codehighlighter1_18_154_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_18_154_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_18_154_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">interface</SPAN><SPAN style="COLOR: #000000">&nbsp;IBase<BR><IMG id=Codehighlighter1_47_152_Open_Image onclick="this.style.display='none'; Codehighlighter1_47_152_Open_Text.style.display='none'; Codehighlighter1_47_152_Closed_Image.style.display='inline'; Codehighlighter1_47_152_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_47_152_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_47_152_Closed_Text.style.display='none'; Codehighlighter1_47_152_Open_Image.style.display='inline'; Codehighlighter1_47_152_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_47_152_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_47_152_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;setName();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000">&nbsp;isMe(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;name);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;name<BR><IMG id=Codehighlighter1_125_147_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_147_Open_Text.style.display='none'; Codehighlighter1_125_147_Closed_Image.style.display='inline'; Codehighlighter1_125_147_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_125_147_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_125_147_Closed_Text.style.display='none'; Codehighlighter1_125_147_Open_Image.style.display='inline'; Codehighlighter1_125_147_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_125_147_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_125_147_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000">&nbsp;my.test<BR><IMG id=Codehighlighter1_175_243_Open_Image onclick="this.style.display='none'; Codehighlighter1_175_243_Open_Text.style.display='none'; Codehighlighter1_175_243_Closed_Image.style.display='inline'; Codehighlighter1_175_243_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_175_243_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_175_243_Closed_Text.style.display='none'; Codehighlighter1_175_243_Open_Image.style.display='inline'; Codehighlighter1_175_243_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_175_243_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_175_243_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">interface</SPAN><SPAN style="COLOR: #000000">&nbsp;IChild:IBase<BR><IMG id=Codehighlighter1_215_241_Open_Image onclick="this.style.display='none'; Codehighlighter1_215_241_Open_Text.style.display='none'; Codehighlighter1_215_241_Closed_Image.style.display='inline'; Codehighlighter1_215_241_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_215_241_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_215_241_Closed_Text.style.display='none'; Codehighlighter1_215_241_Open_Image.style.display='inline'; Codehighlighter1_215_241_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_215_241_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_215_241_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000">&nbsp;isOK();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P dir=ltr style="MARGIN-RIGHT: 0px">告一段落吧。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (つづく)<BR><IMG height=20 src="http://www.blogjava.net/Emoticons/QQ/laf.gif" width=20 border=0>请多提意见，如果有什么不清楚的地方也请你写下来，一起调查咯。&nbsp;&nbsp;<IMG height=20 src="http://www.blogjava.net/Emoticons/QQ/laf.gif" width=20 border=0></P><img src ="http://www.blogjava.net/kinoviti/aggbug/19257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kinoviti/" target="_blank">-=Kino=-</a> 2005-11-11 10:27 <a href="http://www.blogjava.net/kinoviti/archive/2005/11/11/19257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts Logic标签库</title><link>http://www.blogjava.net/kinoviti/archive/2005/10/13/15446.html</link><dc:creator>-=Kino=-</dc:creator><author>-=Kino=-</author><pubDate>Thu, 13 Oct 2005 12:04:00 GMT</pubDate><guid>http://www.blogjava.net/kinoviti/archive/2005/10/13/15446.html</guid><wfw:comment>http://www.blogjava.net/kinoviti/comments/15446.html</wfw:comment><comments>http://www.blogjava.net/kinoviti/archive/2005/10/13/15446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kinoviti/comments/commentRss/15446.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kinoviti/services/trackbacks/15446.html</trackback:ping><description><![CDATA[<P><BR><IMG height=20 src="http://www.blogjava.net/Emoticons/QQ/blink.gif" width=20 border=0>Struts Logic标签库<IMG height=20 src="http://www.blogjava.net/Emoticons/QQ/blink.gif" width=20 border=0>&nbsp;<BR><BR>Keywords: Struts&nbsp; &nbsp;Logic&nbsp; 标签&nbsp; JSP<BR>难度：易<BR><BR>背景：不知道是不是相应“与时俱进”的大号召。反正当今的JSP是越来越难懂了。不是说麻烦，而是因为太简单了，反而不懂了。都是因为引入了 标签库。 这下好了，除了基础HTML,JSP语法外还要学很多标签库的用法。加油吧。<BR><BR>概念：<BR>Struts Logic标签库中的标签可以根据特定的逻辑条件来控制输出网页的内容，或者循环遍历集合中的所有元素。主要用于表示层的显示。<BR>Logic标签库的标签大致分为以下几类：<BR><BR><BR>...没有时间写了。我倒，争取11月之前写完。<BR></P><img src ="http://www.blogjava.net/kinoviti/aggbug/15446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kinoviti/" target="_blank">-=Kino=-</a> 2005-10-13 20:04 <a href="http://www.blogjava.net/kinoviti/archive/2005/10/13/15446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 异常处理</title><link>http://www.blogjava.net/kinoviti/archive/2005/10/13/15420.html</link><dc:creator>-=Kino=-</dc:creator><author>-=Kino=-</author><pubDate>Thu, 13 Oct 2005 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/kinoviti/archive/2005/10/13/15420.html</guid><wfw:comment>http://www.blogjava.net/kinoviti/comments/15420.html</wfw:comment><comments>http://www.blogjava.net/kinoviti/archive/2005/10/13/15420.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kinoviti/comments/commentRss/15420.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kinoviti/services/trackbacks/15420.html</trackback:ping><description><![CDATA[<DIV align=left><PRE><FONT color=#000080 size=5><STRONG><IMG height=1 src="/FreeTextBox/Utility/spacer.gif" width=1>Java异常处理机制<BR><BR> <BR></STRONG><FONT color=#000000 size=3>keywords:<BR><BR>Exception,Method Inovation Stack,<BR><BR>难度：初学，易</FONT><BR><BR> <BR></FONT><FONT color=#000000 size=4><STRONG>异常类的继承</STRONG></FONT><BR>Java异常是java程序运行时遇到非正常情况而创建的一种对象，她包装了异常的信息。<BR>Java异常的顶级类就是java.lang.Throwable。其结构如下：<BR><IMG height=1 src="/FreeTextBox/Utility/spacer.gif" width=1><IMG height=1 src="/FreeTextBox/Utility/spacer.gif" width=1><IMG height=1 src="/FreeTextBox/Utility/spacer.gif" width=1><IMG height=1 src="/FreeTextBox/Utility/spacer.gif" width=1><BR><IMG title=异常类的类图 height=278 alt=JavaExceptionClass src="http://www.blogjava.net/images/blogjava_net/kinoviti/3830/r_JavaException.JPG" width=458 border=0><BR>其中 <BR><BR>Error ---- JVM的错误，也就是程序本身无法恢复的严重错误。<BR><BR>Exception--被程序捕获并处理的异常。<BR><BR><BR><BR><FONT size=4><STRONG>JVM的方法调用堆栈</STRONG></FONT><BR>大家对于Debug都很喜欢，因为每当有异常出现的时候，她会告诉你哪里出了异常调用到底是什么。这又是如何实现的？<BR><BR>在JVM中使用了Method Inovation Stack机制来跟踪每一个线程中一系列的方法调用过程。并保存在Stack里边。<BR>Stack的顶端也就是当前正在处理的方法。在Debug的时候，JVM会暂停被debug的线程，克隆她的Stack，然后显示出来供<BR><BR>developer操作，这一点用Eclipse的人很有体验吧。<BR><BR><BR><BR>一旦异常发生，JVM首先从当前的方法开始寻找处理的try/Catch，找不到，就回朔到stack的下一个，也就是parent调用<BR><BR>方法。举例如下：<BR><BR></PRE></DIV><PRE><DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG id=Codehighlighter1_24_72_Open_Image onclick="this.style.display='none'; Codehighlighter1_24_72_Open_Text.style.display='none'; Codehighlighter1_24_72_Closed_Image.style.display='inline'; Codehighlighter1_24_72_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_24_72_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_24_72_Closed_Text.style.display='none'; Codehighlighter1_24_72_Open_Image.style.display='inline'; Codehighlighter1_24_72_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;child(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;a)throws UserException</SPAN><SPAN id=Codehighlighter1_24_72_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_24_72_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(a&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">throw</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;UserException();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV></PRE><PRE><BR><BR>父方法如下：<BR><BR></PRE><PRE><DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG id=Codehighlighter1_25_194_Open_Image onclick="this.style.display='none'; Codehighlighter1_25_194_Open_Text.style.display='none'; Codehighlighter1_25_194_Closed_Image.style.display='inline'; Codehighlighter1_25_194_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_25_194_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_194_Closed_Text.style.display='none'; Codehighlighter1_25_194_Open_Image.style.display='inline'; Codehighlighter1_25_194_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;parent(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;a)</SPAN><SPAN id=Codehighlighter1_25_194_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_25_194_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_32_83_Open_Image onclick="this.style.display='none'; Codehighlighter1_32_83_Open_Text.style.display='none'; Codehighlighter1_32_83_Closed_Image.style.display='inline'; Codehighlighter1_32_83_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_32_83_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_32_83_Closed_Text.style.display='none'; Codehighlighter1_32_83_Open_Image.style.display='inline'; Codehighlighter1_32_83_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN id=Codehighlighter1_32_83_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_32_83_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method(a);</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">throw&nbsp;Exception</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_107_192_Open_Image onclick="this.style.display='none'; Codehighlighter1_107_192_Open_Text.style.display='none'; Codehighlighter1_107_192_Closed_Image.style.display='inline'; Codehighlighter1_107_192_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_107_192_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_107_192_Closed_Text.style.display='none'; Codehighlighter1_107_192_Open_Image.style.display='inline'; Codehighlighter1_107_192_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">(UserException&nbsp;ue)</SPAN><SPAN id=Codehighlighter1_107_192_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_107_192_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">I&nbsp;get&nbsp;it&nbsp;from&nbsp;Child</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ue.printExceptionStack();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV></PRE><PRE><BR><BR>就这样，异常被抓住了。当然，如果在child方法里边就捕获，parent就不用这么“累”了。<BR><BR>其实最累的还是JVM，她要对异常捕获进行查找，如果一直都找不到，就把异常直接抛给用户，那么在终端上就能看<BR><BR>到了。如果是抛出异常的程序是主程，还没有被捕获，那就“死翘翘”了。要注意！<BR><BR><BR><BR><FONT size=4><STRONG>异常处理对性能的影响</STRONG></FONT><BR><BR>从上边的原理就能知道，不捕捉异常、捕捉异常的位置不合适、都会导致JVM性能降低。<BR><BR><BR><BR>(PS:先记到这里，继续上班。)<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR></PRE><img src ="http://www.blogjava.net/kinoviti/aggbug/15420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kinoviti/" target="_blank">-=Kino=-</a> 2005-10-13 14:15 <a href="http://www.blogjava.net/kinoviti/archive/2005/10/13/15420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>