??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品区二区三区日本,欧美精品一区二区三区在线四季,天堂av在线7http://www.aygfsteel.com/tedazf/category/255.html苦修中…?/description>zh-cnTue, 27 Feb 2007 12:10:22 GMTTue, 27 Feb 2007 12:10:22 GMT60JAVA学习(fn)W记——多U程Qƈ发)(j)http://www.aygfsteel.com/tedazf/articles/900.htmltedazftedazfTue, 01 Feb 2005 15:41:00 GMThttp://www.aygfsteel.com/tedazf/articles/900.htmlhttp://www.aygfsteel.com/tedazf/comments/900.htmlhttp://www.aygfsteel.com/tedazf/articles/900.html#Feedback2http://www.aygfsteel.com/tedazf/comments/commentRss/900.htmlhttp://www.aygfsteel.com/tedazf/services/trackbacks/900.htmlJAVA学习(fn)W记——多U程Qƈ发)(j)

 

多线E的用?/SPAN>

E序的某一部分正在{一个事件或资源Q而你又不惌它把整个E序都给d?jin)。因此你可以创徏一个与该事件或资源相关的线E,让它与主E序分开来运行,例如在运的同时Q监视键盘的输入?/SPAN>

 

多线E的~点

׃n资源Ӟ?x)降低运行效率;额外的消?/SPAN>CPU资源Q用不当会(x)抛出异常、或引发一些不正常状态;与^台有一定的相关性?/SPAN>

 

U程的状?/SPAN>

1.       newQ线E刚刚徏好,q未启动?/SPAN>

2.       runableQ排在队列中{待被分?/SPAN>CPU旉片?/SPAN>

3.       deadQ被中止的状态?/SPAN>

4.       blockedQ由于非CPU旉片原因而不能运行的U程Q如sleepQ)(j)?/SPAN>waitQ)(j)?/SPAN>IO问题Q?/SPAN>

 

实现Ҏ(gu)

1.       创造一个类d?/SPAN>runable接口Qƈ重写runQ)(j)Ҏ(gu)Q然后实例化出来一个对?/SPAN>AQ然后在ȝ序中?/SPAN>A作ؓ(f)参数创徏一?/SPAN>Threadcȝ对象Q调用其中的startQ)(j)来启动线E。(恺与孙鑫推荐用此种Ҏ(gu)创徏U程Q?/SPAN>

2.       ?/SPAN>ThreadcMzZ个类Q重?/SPAN>runQ)(j)Ҏ(gu)Q然后在ȝE中创徏一个对象,调用其中?/SPAN>startQ)(j)Ҏ(gu)来启动线E。(BruceEckel则推荐用此种Ҏ(gu)创徏U程Q?/SPAN>

 

主要函数

startQ)(j)Q?/SPAN>启动一个进E?/SPAN>

stopQ)(j)Q?/SPAN>l束一个进E,׃它不?x)释攑֯象的锁,所以现在已l不提倡用它?jin)?/SPAN>

suspendQ)(j)Q?/SPAN>挂vq程。(不推荐用)(j)

resumeQ)(j)Q?/SPAN>唤醒q程。(不推荐用)(j)

interruptQ)(j)Q打?/SPAN>

yieldQ)(j)Q?/SPAN>d攑ּCPU的占用,也可能在未执行到此语句时Q被虚拟机强制放弃,所以一般不能用来严格控制线E?/SPAN>

sleepQ)(j)Q?/SPAN>暂停U程一D|_(d)然后重新q入CPU使用序列排队Q所以ƈ不能准确地设定线E的暂停旉Q所讑֮的时间只是最的使用旉Q异常情况不)(j)。另外,一定要攑֜try域中?/SPAN>

setPriorityQ)(j)Q设|线E的优先U?/SPAN>

getPriorityQ)(j)Q?/SPAN>获取U程的优先。由不同操作pȝ的优先讑֮不太一P所以对优先U的操作最好?/SPAN>MIN_PRIORITY, NORM_PRIORITY, ?/SPAN>MIN_PRORITY来表C?/SPAN>

setDaemonQ)(j)Q?/SPAN>用于线E设|ؓ(f)DaemonU程Q但必须在线E启动之前?/SPAN>

isDaemonQ)(j)Q?/SPAN>判断U程是否?/SPAN>DaemonU程?/SPAN>

isAliveQ)(j)Q?/SPAN>判断U程是否q存在?/SPAN>

joinQ)(j)Q?/SPAN>用于不同U程间的联系Q当一个线E?/SPAN>1调用另一个线E?/SPAN>2?/SPAN>joinQ)(j)Ҏ(gu)Q那么线E?/SPAN>1在线E?/SPAN>2l束前就?x)被挂vQ除非设|?/SPAN>timeoutQ。由于也可以?/SPAN>interruptQ)(j)打断Q所以也要放?/SPAN>try域中?/SPAN>

currentThreadQ)(j)Q?/SPAN>获得当前U程Q即执行此方法的U程?/SPAN>

getNameQ)(j)Q?/SPAN>获得U程的名字?/SPAN>

getThreadGroupQ)(j)Q?/SPAN>获得U程所属的U程l?/SPAN>

 

DaemonU程

DaemonU程在后台运行,当所有的?/SPAN>DaemonU程l束?jin)?/SPAN>DaemonU程也随之结束,另外?/SPAN>DaemonU程中创建的U程Q都默认讄?/SPAN>DaemonU程?/SPAN>

 

 

解决׃n资源冲突

防止资源冲突的两U方法:(x)同步块和同步Ҏ(gu)?/SPAN>

同步?/SPAN>Q需要将要同步的代码攑ֈsynchronizedQ?/SPAN>objectQ?/SPAN>{}中,׃每个对象均有一个监视器Q锁Q,所以其中的object可ؓ(f)Lcȝ对象Q静(rn)态方法则默认使用cȝClass对象?/SPAN>

同步Ҏ(gu)Q?/SPAN>需要同步的代码攑ֈ某一Ҏ(gu)中,且将Ҏ(gu)讄?/SPAN>synchronized?/SPAN>

 

q程间的协作

当发?/SPAN>nodifyQ)(j)的时候,发生waitQ)(j)的地Ҏ(gu)可以l箋q行Q且它们必须攑֜同一个对象的同步块或同步Ҏ(gu)之中?/SPAN>

waitQ)(j)后将当前U程攑ֈ一个等待队列中Q?/SPAN>nodifyQ)(j)后从{待队列中随意激zM个?/SPAN>

 

U程l?/SPAN>

U程l?/SPAN>是一个装U程的容器。用Joshua BlochQ也是负责修补和改q?/SPAN>JDK 1.2?/SPAN>Java容器cd的那?/SPAN>Sun的Y件架构师Q的话来Ԍ它的意义可以概括为:(x)“最好把U程l看成是一ơ不成功的实验,或者就当它Ҏ(gu)不存在。?SPAN lang=EN-US>

 

Javaq行时的几个pȝU程

Referrence HandlerQ系l用来控制引用的U程。(优先U:(x)10Q?/SPAN>

FinalizerQ垃圾收集器。(优先U:(x)8Q?/SPAN>

Singnal DispatcherQ信号分配器。(优先U:(x)10Q?/SPAN>

Compiler ThreadQ用于优化。(优先U:(x)10Q?/SPAN>

 

 

其他一些小问题

?SPAN style="FONT: 7pt 'Times New Roman'">     JAVA中只有除long?/SPAN>double以外的基本类型的赋值和q回式原子操作,其他的操作即使看上去非常像原子操作,我们也最好加?/SPAN>synchronizedQ这也算?/SPAN>JAVA?/SPAN>C++的一点不同之处吧。最安全的原子操作只有读取和?/SPAN>primitive赋D两种?/SPAN>

?SPAN style="FONT: 7pt 'Times New Roman'">     如果你要防止讉K资源冲突Q就索性把cM的所有的Ҏ(gu)全都synchronize?jin),因?f)判断哪些Ҏ(gu)?/SPAN>synchronize很难的,而且synchronizeҎ(gu)能的媄(jing)响也不大?/SPAN>

?SPAN style="FONT: 7pt 'Times New Roman'">     对象使用完之后,要记得赋gؓ(f)nullQ也是释放其内存空间?/SPAN>

?SPAN style="FONT: 7pt 'Times New Roman'">     Threadcȝ对象不会(x)因ؓ(f)没有引用而被垃圾攉h集掉Q直到其U程l束?/SPAN>

?SPAN style="FONT: 7pt 'Times New Roman'">     volatile标记用来排除优化Q否则,~译器仅?x)读取缓存中的变量?/SPAN>

 

 

参考:(x)?/SPAN>Think In JAVAW三版》、翁?/SPAN>java教学视频、孙?/SPAN>java教学视频?/SPAN>

 



tedazf 2005-02-01 23:41 发表评论
]]>
JAVA学习(fn)W记Q一Q?/title><link>http://www.aygfsteel.com/tedazf/articles/353.html</link><dc:creator>tedazf</dc:creator><author>tedazf</author><pubDate>Sun, 16 Jan 2005 10:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/tedazf/articles/353.html</guid><wfw:comment>http://www.aygfsteel.com/tedazf/comments/353.html</wfw:comment><comments>http://www.aygfsteel.com/tedazf/articles/353.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tedazf/comments/commentRss/353.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tedazf/services/trackbacks/353.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最q刚开始学JavaQ找?jin)一些视频文Ӟ看了(jin)恺的和孙鑫的,觉得q算不错Q自p学边记录下一些重点,方便自己以后的查阅,下面q些不是单的抄笔讎ͼ而是自己消化?jin)之后从新组l的语言Q力求简z易懂!有了(jin)问题我还?x)修改的?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></span></b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引用</span><span lang="EN"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">Java</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的对象定义都是定义Z个引用,其本wƈ不存储对象的数|只是存储指向对象内存块儿的指针,其本质就是不能运的指针?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span lang="EN">Break </span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">跛_双层循环</span><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">格式Q?/span><span lang="EN">break </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标号</span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">h部分</span><span lang="EN">goto</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句功能Q用于蟩出@环,其是双层@环?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span lang="EN">This</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关键?/span><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">this</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关键字可以ؓ(f)已调用了(jin)其方法的那个对象生成相应的句柄,卌用这个函数的那个对象是</span><span lang="EN">this</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN">this</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以在一个构造函C调用另一个构造函敎ͼ但只能调用一个?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">af ( int a ){}<span style="mso-spacerun: yes">  </span>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造函?/span><span lang="EN">1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q即被调用的构造函敎ͼ(j)</span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">af ( int a , String b){ this(a); }<span style="mso-spacerun: yes">   </span>//</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构造函?/span><span lang="EN">2</span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto">finalize() </span><span style="BACKGROUND: #d9d9d9; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-shading: white; mso-pattern: gray-15 auto">在运行垃圑֛收器之前q行的函?/span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="BACKGROUND: #d9d9d9; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-shading: white; mso-pattern: gray-15 auto">?rn)态的东西属于c,动态的东西属于对象?/span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象初始化的序</span><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">创徏一个对象时Q先要找到其对应?/span><span lang="EN">.class</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文g?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">(g)查对象是否有父类。如果有父类Q则需要执行父cM的静(rn)态初始化?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">执行c自己本w的?rn)态初始化?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">4.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span lang="EN">new</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句首先?x)在内存内分配一个够的I间Q且全部?/span><span lang="EN">0</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">5.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">依次执行父类中的定义初始化和构造函数?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">6.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">依次执行父类中的定义初始化和构造函数。(完成Q?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?rn)态初始化?/span><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">static{<span style="mso-tab-count: 1">     </span>c1 = new cpu(1);</span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><span style="mso-tab-count: 2">              </span>c2 = new cpu(2);<span style="mso-tab-count: 1">   </span>}</span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义初始?/span><span lang="EN">(</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用于无名cȝ构造函?/span><span lang="EN">)<o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">{<span style="mso-tab-count: 1">     </span>c1 = new cpu(1);</span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><span style="mso-tab-count: 1">       </span>c2 = new cpu(2);<span style="mso-tab-count: 1">   </span>}</span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="BACKGROUND: #d9d9d9; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-shading: white; mso-pattern: gray-15 auto">每个~译单元都是?/span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto">.java</span><span style="BACKGROUND: #d9d9d9; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-shading: white; mso-pattern: gray-15 auto">为结文gQ在一个编译单元里Q只可以有一?/span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto">public</span><span style="BACKGROUND: #d9d9d9; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-shading: white; mso-pattern: gray-15 auto">c,且这个类的名字必M原文件的文g名相同?/span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">cȝ讉K说明W?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l7 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span lang="EN">public</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span><span lang="EN"><span style="mso-tab-count: 1">   </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">界面讉K</span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l7 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span lang="EN">private</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span><span lang="EN"><span style="mso-tab-count: 1">  </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不能接触</span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l7 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span lang="EN">protect</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span><span lang="EN"><span style="mso-tab-count: 1">  </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">某种友好</span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l7 level1 lfo2; tab-stops: list 18.0pt"><span lang="EN" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">4.<span style="FONT: 7pt 'Times New Roman'">       </span></span></span><span lang="EN">friengly</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span><span lang="EN"><span style="mso-tab-count: 1"> </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">~省?/span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="BACKGROUND: #d9d9d9; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-shading: white; mso-pattern: gray-15 auto">?rn)态的成员变量qcd子类共同使用Q其他变量则各有一套?/span><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">l定</span><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">动态绑定(</span><span lang="EN">Java</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">常用Q:(x)在程序的q行中才军_要执行的函数为哪一个函敎ͼ优点是用灵z,~点是执行效率低?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?rn)态绑定(</span><span lang="EN">C/C++</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">常用Q:(x)在程序运行之前就已经定需要执行的函数Q有~点与动态相反?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span lang="EN">Final<o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">final</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的成员变量:(x)只可赋gơ,有时?x)用?/span><span lang="EN">Java</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的帔R?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">final</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的函数变量:(x)防止l承者改变其实现?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN">final</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的类Q不可ѝ?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="BACKGROUND: #d9d9d9; mso-shading: white; mso-pattern: gray-15 auto"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">抽象cd抽象Ҏ(gu)</span><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo3; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">抽象cM用仅是表达接口,其所有方法都是没有函C的声明,且不能生对象?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l4 level1 lfo8; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包含一个抽象方法的cd是一个抽象类?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l8 level1 lfo7; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">没有抽象Ҏ(gu)的类也可以是一个抽象类?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo6; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从抽象类中承的cd覆盖所有的抽象Ҏ(gu)Q否则仍是一个抽象类?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口</span><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l5 level1 lfo5; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口是一个所有方法全是抽象方法的cR?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo4; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口可以l承Q且可以实现多承,但只可以从接口中l承?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo4; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">无论是否声明Q接口中的所有方法全?/span><span lang="EN">public</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的,所有成员变量全?/span><span lang="EN">public static final</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的,其变量的值都需在编译前定?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo4; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个类可以在承其他类的同时实现多个接口?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">内部c(</span><span lang="EN">inner class</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l6 level1 lfo9; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">内部cd是就是写在类中(甚至写在cd函数中)(j)的类Q其基本{同于类内的成员函数Q包括可以加讉K说明W、可以访问私有变量等Ҏ(gu)?/span><b style="mso-bidi-font-weight: normal"><span lang="EN"><o:p></o:p></span></b></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l6 level1 lfo9; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源文件编译后Q内部类成为独立的</span><span lang="EN">.class</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文g?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l6 level1 lfo9; tab-stops: list 21.0pt"><span lang="EN" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">         </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">U有内部cd往用于提供接口的同旉藏自q实现l节?/span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id=_x0000_s1026 style="MARGIN-TOP: 0px; Z-INDEX: -1; LEFT: 0px; MARGIN-LEFT: 63pt; WIDTH: 279pt; POSITION: absolute; HEIGHT: 234.75pt; TEXT-ALIGN: left" type="#_x0000_t75"><v:imagedata o:title="Pic1" src="file:///D:\DOCUME~1\ZhangFan\LOCALS~1\Temp\msohtml1\01\clip_image001.png"></v:imagedata></v:shape></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p><img height="385" src="http://www.aygfsteel.com/images/blogjava_net/tedazf/Pic1.gif" width="457" border="0" /> </o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN"><o:p>                                               </o:p></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN">1</span></p><img src ="http://www.aygfsteel.com/tedazf/aggbug/353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tedazf/" target="_blank">tedazf</a> 2005-01-16 18:32 <a href="http://www.aygfsteel.com/tedazf/articles/353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʻ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">·</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ͼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">٤ʦ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ﶫ</a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank">ͤ</a>| <a href="http://" target="_blank">ͤ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ͼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʱ</a>| <a href="http://" target="_blank">˼</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>