談笑有鴻儒,往來(lái)無(wú)白丁

          在恰當(dāng)?shù)臅r(shí)間、地點(diǎn)以恰當(dāng)?shù)姆绞奖磉_(dá)給恰當(dāng)?shù)娜?..  閱讀的時(shí)候請(qǐng)注意分類,佛曰我日里面是談笑文章,其他是各個(gè)分類的文章,積極的熱情投入到寫博的隊(duì)伍中來(lái),支持blogjava做大做強(qiáng)!向dudu站長(zhǎng)致敬>> > 我的微博敬請(qǐng)收聽
          class A
          {
          ? ?public void func1()
          ? ?{
          ? ? ? System.out.println("A func1 is calling");
          ? ?}
          ? ?public void func2()
          ? ?{
          ? ? ? func1();
          ? ?}
          }
          class B extends A
          {
          ? ?public void func1()
          ? ?{
          ? ? ? System.out.println("B fun1 is calling");
          ? ?}
          }
          class C
          {
          ? ?public static void main(String [] args)
          ? ?{
          ? ? ? B b=new B();
          ? ? ? A a=b;
          ? ? ? callA(a);
          ? ? ? callA(new B());
          ? ?}
          ? ?public static void callA(A a)
          ? ?{
          ? ? ? a.func1();
          ? ? ? a.func2();
          ? ?}
          }


          運(yùn)行結(jié)果:

          D:\>javac C.java

          D:\>java C
          B fun1 is calling
          B fun1 is calling
          B fun1 is calling
          B fun1 is calling

          簡(jiǎn)單來(lái)說(shuō),就是RTTI,動(dòng)態(tài)類型判定,也就是

          B b=new B();
          A a=new B();

          只要等號(hào)右邊類型是什么類型,而且已經(jīng)覆蓋父類的方法,那么調(diào)用該方法時(shí),會(huì)自動(dòng)知道相應(yīng)的B中的覆蓋方法。這是一定的,運(yùn)行時(shí)多態(tài)。

          ==================================================

          只對(duì)方法進(jìn)行動(dòng)態(tài)判定,屬性的取值看,等號(hào)左邊,也就是編譯時(shí)類型。

          將A和B添加一個(gè)屬性,在索取值,看結(jié)果:

          class A
          {
          ? ?public String name = "A CLASS";
          ? ?public void func1()
          ? ?{
          ? ? ? System.out.println("A func1 is calling");
          ? ?}
          ? ?public void func2()
          ? ?{
          ? ? ? func1();
          ? ?}
          }
          class B extends A
          {
          ? ?public String name = "B CLASS";
          ? ?public void func1()
          ? ?{
          ? ? ? System.out.println("B fun1 is calling");
          ? ?}
          }
          public class C
          {
          ? ?public static void main(String [] args)
          ? ?{
          ? ? ? B b=new B();
          ? ? ? A a=b;
          ? ? ? callA(a);
          ? ? ? callA(new B());
          ? ? ?
          ? ? ?
          ? ? ? System.out.println(a.name);
          ? ? ? System.out.println(b.name);
          ? ? ? System.out.println(new B().name);
          ? ? ?

          ? ?}
          ? ?public static void callA(A a)
          ? ?{
          ? ? ? a.func1();
          ? ? ? a.func2();
          ? ?}
          }

          運(yùn)行結(jié)果:

          D:\>javac C.java

          D:\>java C
          B fun1 is calling
          B fun1 is calling
          B fun1 is calling
          B fun1 is calling
          A CLASS
          B CLASS
          B CLASS
          posted on 2007-01-05 09:53 壞男孩 閱讀(805) 評(píng)論(0)  編輯  收藏 所屬分類: java命令學(xué)習(xí)
          主站蜘蛛池模板: 电白县| 邢台市| 广宗县| 阿瓦提县| 沽源县| 屏东市| 沅陵县| 台中县| 雷州市| 德昌县| 泌阳县| 孝感市| 青神县| 班戈县| 酉阳| 樟树市| 利辛县| 诸城市| 桂阳县| 麻城市| 甘泉县| 谢通门县| 景宁| 沁水县| 甘孜| 昭通市| 临朐县| 汤原县| 抚远县| 贡觉县| 信丰县| 新疆| 潜山县| 绥芬河市| 南涧| 黑龙江省| 罗田县| 丹棱县| 永昌县| 特克斯县| 泰兴市|