LittleRain

          小雨不打傘 打傘雨不小

          SL275之多態(tài)

          多態(tài)
          eg :
          class A{method();}
          class B extends A{method();}
          A a=new B();
          a.method()調(diào)用的是B的method()方法。//a.method()執(zhí)行是,應(yīng)該看引用a具體指向的內(nèi)存空間實(shí)際存在的是什么對象。從這里來看,引用a所指向的實(shí)際內(nèi)存空間是B的實(shí)例。

          方法的調(diào)用具體決定于運(yùn)行時,編譯器只是檢查java語法的正誤。

          通過? 對象.屬性?? 的形式來獲得屬性值時,具體返回的屬性值是依賴于對象引用的類型的。

          而通過方法來獲得對象的屬性時,方法調(diào)用所返回的屬性則決定于具體內(nèi)存中存在的真正對象

          (attention: 靜態(tài)的方法這一條不適用)

          Eg:
          public class TestPoly {
          ?public static void main(String[] args) {
          ?
          ?Father1 f=new Child1();
          ??????? System.out.println(f.age);//在編譯階段就已經(jīng)可以確定f.age的值是:45,因?yàn)樵诰幾g時不會生成對象,
          ??????????????????????????????????????????????//直接看引用類型即可,所以下面的((Child1)f).age之間看f的類型即可。
          ??????? System.out.println(((Child1)f).age);

          ??????? f.printAge();//這個需要在運(yùn)行是通過方法來決定結(jié)果,此時,f引用指向的是Child1類型的對象空間,所以調(diào)用的是Child類的pringAge()方法,從而得出結(jié)果是:90
          ??????((Child1)f).printAge();
          ????????}
          }

          class Father1{
          ?int age=45;
          ?public void printAge(){
          ??System.out.println(age);
          ?}
          }

          class Child1 extends Father1{
          ?int age=90;
          ?public void printAge(){
          ??System.out.println(age);
          ?}
          }

          posted on 2006-10-04 15:33 小雨不打傘 閱讀(346) 評論(0)  編輯  收藏 所屬分類: SL-275學(xué)習(xí)筆記

          公告

          點(diǎn)擊這里給我發(fā)消息 QQ:232720563


            MSN:new_haihua@hotmail.com

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆分類(51)

          最新隨筆

          積分與排名

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 满城县| 临洮县| 日喀则市| 闽侯县| 民勤县| 绍兴县| 鲁山县| 象州县| 宁阳县| 巴东县| 桂林市| 无棣县| 黄梅县| 应城市| 嫩江县| 双江| 汨罗市| 江源县| 江川县| 乌拉特中旗| 和平区| 定陶县| 夹江县| 霸州市| 德安县| 那坡县| 永靖县| 木里| 闸北区| 舟曲县| 新和县| 盘锦市| 东宁县| 浦城县| 西华县| 杭州市| 长海县| 洛川县| 天全县| 缙云县| 沛县|