教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 Java编程思想(2nd)学习笔记(7)

Java编程思想(2nd)学习笔记(7)

发布时间:2018-12-21   编辑:jiaochengji.com
教程集为您提供Java编程思想(2nd)学习笔记(7)等资源,欢迎您收藏本站,我们将为您提供最新的Java编程思想(2nd)学习笔记(7)资源


第2章</FONT><span style="FONT: 7pt ''Times New Roman''">           <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">多态</FONT></P>

<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">一.再探向上转型(<span lang=EN-US>upcasting<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">)</FONT></P>

<span lang=EN-US><span style="mso-tab-count: 1">       <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">将某个<span lang=EN-US>object<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>reference<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">视为一个“<span lang=EN-US>reference<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>to<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>type<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">“的动作,称为向上转型。</FONT></P>

ndENT: -18pt; mso-list: l2 level2 lfo1; tab-stops: list 39.0pt"><span lang=EN-US>1.</FONT><span style="FONT: 7pt ''Times New Roman''">  <span lang=EN-US>Upcasting<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">后调用某个函数时,如果<span lang=EN-US>derived<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中覆写了该函数,则会调用<span lang=EN-US>derived<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中的函数;否则,会调用<span lang=EN-US>base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中的函数。如</FONT></P>

<span lang=EN-US>class First{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">    public void prt(){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        System.out.println("First");</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>class Second extends First{</FONT>

<span lang=EN-US><span style="mso-tab-count: 1">       //<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">(<span lang=EN-US>a<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">)</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void prt(){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        System.out.println("Second");</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>public class ExplicitStatic{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">    public static void main(String[] args){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        First n = new Second();</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        n.prt();;</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US>}</FONT>

<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">结果为<span lang=EN-US>Second<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">。如果当<span lang=EN-US>Second<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中的<span lang=EN-US>prt()<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">函数注释掉,将输出<span lang=EN-US>First<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">。</FONT></P>

2.</FONT><span style="FONT: 7pt ''Times New Roman''">  <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">向上转型后只能调用<span lang=EN-US>base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中被<span lang=EN-US>derived<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">覆写的函数。</FONT></P>

<span lang=EN-US>/*</FONT>

<span lang=EN-US>abstract class First{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">    int i = 122;</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    public void prt(){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        System.out.println("First.i = " i);</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    public abstract void prt(First f);</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US> <o:p></o:p></FONT>

<span lang=EN-US>class Second extends First{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">     public void prt(){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">  <span style="mso-spacerun: yes">      System.out.println("Second.i = " i);</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    </FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    public void prt(First i)</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    {</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        </FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    </FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    public void prt(int i)</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    {</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        </FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>public class ExplicitStatic{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">    public static void main(String[] args){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        First n = new Second();</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        n.prt(2);;</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>*/</FONT>

<span lang=EN-US>class First{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">    public void prt(){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        System.out.println("First");</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>class Second extends First{</FONT>

<span lang=EN-US><span style="mso-tab-count: 1">       //<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">(<span lang=EN-US>a<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">)</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void prt(){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        System.out.println("Second");</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    public void prt(int i){//<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">(<span lang=EN-US>a<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">)</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        System.out.println("Second.i = " i);</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>public class ExplicitStatic{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">    public static void main(String[] args){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        First n = new Second();</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        n.prt(3);</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    }</FONT></P>

<span lang=EN-US>}</FONT>

(<span lang=EN-US>a<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">)处的函数只是<span lang=EN-US>Second<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中的函数,所以不能通过<span lang=EN-US>n.prt(3)<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">进行调用。</FONT></P>

<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">二.<span lang=EN-US>Abstract<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">和<span lang=EN-US>Abstract<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>methods</FONT></P>

1.</FONT><span style="FONT: 7pt ''Times New Roman''">  <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">如果一个<span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中存在<span lang=EN-US>abstract<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">,则<span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">也必须被声明为<span lang=EN-US>abstract<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">。</FONT></P>

ndENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt"><span lang=EN-US>2.</FONT><span style="FONT: 7pt ''Times New Roman''">  <span lang=EN-US>abstract<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">不能被实例化。</FONT></P>

3.</FONT><span style="FONT: 7pt ''Times New Roman''">  <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">如果<span lang=EN-US>base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">是一个<span lang=EN-US>abstract<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">,那么<span lang=EN-US>derived<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">必须实现<span lang=EN-US>base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中所有的<span lang=EN-US>abstract<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>methods<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">;否则,<span lang=EN-US>derived<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">也必须被声明为<span lang=EN-US>abstract<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">。</FONT></P>

<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">三.其它要点</FONT>

ndENT: -18pt; mso-list: l1 level1 lfo3; tab-stops: list 36.0pt"><span lang=EN-US>1.</FONT><span style="FONT: 7pt ''Times New Roman''">  <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">纯粹继承与扩充</FONT></P>

<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">纯粹继承:只有<span lang=EN-US>base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">所建议的函数,才被<span lang=EN-US>derived<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">加以覆写。</FONT></P>

<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">扩充:除了覆写<span lang=EN-US>base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">的函数,还实现了自己的函数</FONT></P>

<span lang=EN-US><span style="mso-tab-count: 2">         abstract class First{</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    public abstract void f();</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">    public abstract void g();</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>//<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">纯粹继承</FONT></P>

<span lang=EN-US>class Second extends First{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">     public void f(){}</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void g(){}</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>//<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">扩充</FONT></P>

<span lang=EN-US>class Third extends First{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">     public void f(){}</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void g(){}</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void u(){}//base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">不存在的函数</FONT></P>

<span lang=EN-US>}</FONT>

2.</FONT><span style="FONT: 7pt ''Times New Roman''">  <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">向下转型</FONT></P>

ndENT: -18pt; mso-list: l1 level2 lfo3; tab-stops: list 36.0pt"><span lang=EN-US>1)</FONT><span style="FONT: 7pt ''Times New Roman''">  <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">向下转型时只能调用<span lang=EN-US>base<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中被覆写过的函数</FONT></P>

2)</FONT><span style="FONT: 7pt ''Times New Roman''">  <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">只有本来就为<span lang=EN-US>derived<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">对象时才能正确向下转弄。</FONT></P>

<span lang=EN-US>class First{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">     public void f(){}</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void g(){}</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>class Second extends First{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">     public void f(){}</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void g(){}</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void u(){}</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">     public void v(){}</FONT></P>

<span lang=EN-US>}</FONT>

<span lang=EN-US>public class ExplicitStatic{</FONT>

<span lang=EN-US><span style="mso-spacerun: yes">    public static void main(String[] args){</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">       <span style="mso-spacerun: yes"> First[] x = {new First(), new Second()};</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        x[0].f();</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        x[1].g();</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        //<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">!<span lang=EN-US>x[1].u();class<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''"> <span lang=EN-US>First<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">中不存在函数<span lang=EN-US>u()</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        //((Second)x[0]).f();<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">(<span lang=EN-US>a<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">)</FONT></P>

<span lang=EN-US><span style="mso-spacerun: yes">        ((Second)x[1]).u();</FONT></P>

}</FONT>

<span lang=EN-US><span style="mso-tab-count: 2">              }</FONT></P>

<span lang=EN-US><span style="mso-tab-count: 2">              <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">(<span lang=EN-US>a<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">)处会抛出<span lang=EN-US>ClassCastException<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: ''Times New Roman''; mso-hansi-font-family: ''Times New Roman''">异常。</FONT></P>
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

[关闭]
~ ~