qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          一個(gè)例子理解java面向?qū)ο蟮臋C(jī)制

          //定義Gun類
          public abstract class Gun {
          protected String name;
          // 帶參數(shù)的構(gòu)造方法,特殊的方法,名字必須與類名相同
          public Gun() {
          public Gun(String name) {
          this.name = name;
          // 構(gòu)造抽象方法,并在子類中繼承和定義。
          abstract void sound();
          public String getName() {
          return name;
          public void setName(String name) {
          this.name = name;
          //Carbine繼承自Gun
          public class Carbine extends Gun {
          //帶參數(shù)的構(gòu)造方法,特殊的方法,名字必須與類名相同
          public Carbine(String name) {
          this.name = name;
          //Gun類下不同的子類擁有同名的sound()方法,但是內(nèi)容不同,在調(diào)用sound()方法時(shí)會(huì)根據(jù)具體的Gun而自動(dòng)調(diào)用相應(yīng)的方法。
          //這用到了Java的多態(tài)性。
          void sound() http://www.huiyi8.com/jiaoben/
          // TODO Auto-generated method stub
          System.out.println("DaDaDa!"); javascript特效
          //Rifle繼承自Gun
          public class Rifle extends Gun {
          //帶參數(shù)的構(gòu)造方法,是特殊的方法,名字必須與類名相同
          public Rifle(String name) {
          this.name = name;
          //Gun類下不同的子類擁有同名的sound()方法,但是內(nèi)容不同,在調(diào)用sound()方法時(shí)會(huì)根據(jù)具體的Gun而自動(dòng)調(diào)用相應(yīng)的方法。
          //這用到了Java的多態(tài)性。
          void sound() {
          // TODO Auto-generated method stub
          System.out.println("Peng! Peng! Peng!");
          //定義Person類
          public class Person {
          private String name;
          public String getName() {
          return name;
          public void setName(String name) {
          this.name = name;
          // 體現(xiàn)多態(tài)性。
          public void shoot(Person p, Gun g) {
          System.out.println(this.name + " shoot\t" + p.getName() + " using a "
          + g.getName());
          g.sound();
          //在main()函數(shù)中測(cè)試
          public class Test {
          public static void main(String[] args) {
          // TODO Auto-generated method stub
          Person p1 = new Person();
          Person p2 = new Person();
          p1.setName("XiaoWang");
          p2.setName("XiaoLi");
          Rifle r = new Rifle("rifle");
          Carbine c = new Carbine("carbine");
          // 將方法的調(diào)用和實(shí)現(xiàn)分離,已達(dá)到封裝的效果。
          p1.shoot(p2, r);
          p1.shoot(p2, c);

          posted on 2014-08-14 09:30 順其自然EVO 閱讀(191) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 绥德县| 高雄市| 鄂伦春自治旗| 桂阳县| 遂宁市| 永新县| 忻州市| 周宁县| 塔河县| 白银市| 青冈县| 茶陵县| 达尔| 宝坻区| 林西县| 玉溪市| 郧西县| 廉江市| 乐昌市| 民县| 方城县| 金坛市| 星子县| 古交市| 民丰县| 高台县| 上高县| 五原县| 山阳县| 伊川县| 伊宁市| 册亨县| 苍山县| 拜城县| 曲阜市| 介休市| 温州市| 武夷山市| 扶风县| 屏东县| 宁武县|