工作小驛

          Ninja!

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            103 Posts :: 0 Stories :: 36 Comments :: 0 Trackbacks

           

              java語言中的概念就是多,這回又有兩個(gè)概念,重載和重寫。這是兩個(gè)新概念,也是兩個(gè)令初學(xué)者容易混淆的概念。他們的概念截然不同,只不過都有個(gè)“重”字,就以為是很像的。下面解釋一下這兩個(gè)概念:

              方法重載(overloading method) 是在一個(gè)類里面,方法名字相同,而參數(shù)不同。返回類型呢?可以相同也可以不同。

              方法重寫(overiding method) 子類不想原封不動(dòng)地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。方法重寫又稱方法覆蓋。如果還是搞混的話,就把“重寫覆蓋”,這個(gè)詞多念幾遍吧。知道是覆蓋的話,就知道是子類覆蓋父類的方法了。

          實(shí)踐: 重載的例子

          public class MethodOverloading {
          void recieve(int i) {
               System.out.println("接收一個(gè)int數(shù)據(jù)");
               System.out.println("i="+i);
               }
          void recieve(float f) {
             
           System.out.println("接受一個(gè)float型的數(shù)據(jù)");
               System.out.println("f="+f);
               }
              
          void recieve(String s) {
              
          System.out.println("接受一個(gè)String型數(shù)據(jù)");
              
          System.out.println("s="+s);
               }

          public static void main(String[] args){

              MethodOverloading m = new MethodOverloading();

              m.recieve(3456);

              m.recieve(34.56);

          m.recieve(“百家拳軟件項(xiàng)目研究室“);

          }
          }

          大家看到了上面的例子方法receive()有三個(gè),名字相同參數(shù)不同。這樣的話,在main()調(diào)用的時(shí)候,參數(shù)用起來就很方便了。重寫的例子似乎不用舉了,記不住的話,就和“覆蓋”。一起念。

              有時(shí)候,重載和重寫的方式有些復(fù)雜,在jdk5里面。有一些方式能簡(jiǎn)化一些。我們來看看吧,jdk5可變參數(shù) 如果把相同參數(shù)類型的方法重載好幾遍真的是很煩。就一個(gè)方法,pri(String args), pri(String arg0 ,String arg1), pri(String arg0,String arg1,String arg2), pri(String arg0,String arg1,String arg2,String arg3)。這樣的話會(huì)寫很多煩瑣的代碼。現(xiàn)在jdk5可以,用“”來代替這些參數(shù)。實(shí)踐:

           public class overload {

          //若干個(gè)相同類型的參數(shù),用“...”代替

            public void pri(String... strings ){

                 for (String str : strings)   //for這個(gè)循環(huán)語句也有迭代的意思

                 System.out.print(str);

             }

             public static void main(String[] args){

                 new overload().pri("100jq"," 百家拳軟件項(xiàng)目研究室"," www.100jq.com");

             }

          } 上述例子打包下載

          jdk5的方法重寫,比以前多了一個(gè)叫做協(xié)變返回的概念。在以往jdk的版本中,還有一個(gè)比較讓人討厭的地方。方法重寫確實(shí)是比較不錯(cuò)的機(jī)制,如果想用父類的方法,寫個(gè)super就可以了,如果不想用父類的方法就重寫覆蓋。但是重寫覆蓋的返回類型不能覆蓋,父類的類型不夠用怎么辦,我們想在子類重寫它的類型可以嗎?現(xiàn)在可以了。看下面的例子:

          class Point2D { //定義二維的點(diǎn)

           protected int x, y;

           public Point2D() {

              this.x=0;

              this.y=0;}

           public Point2D(int x, int y) {

              this.x = x;

              this.y = y;

           }}

          //定義三維的點(diǎn),繼承二維

          class Point3D extends Point2D {

           protected int z;

           public Point3D(int x, int y) {

              this(x, y, 0);

           }

           public Point3D(int x, int y, int z) {

              this.x = x;

              this.y = y;

              this.z = z;

           }}

          //定義二維的位置

          class Position2D {

           Point2D location;

           public Position2D() {

              this.location = new Point2D();

           }

           public Position2D(int x, int y) {

              this.location = new Point2D(x, y);

           }

           public Point2D getLocation() {

              return location;

           }}

          //定義三維的位置,繼承二維的位置

          class Position3D extends Position2D {

           Point3D location; //在這里已經(jīng)變成Point3D的類型了

           public Position3D(int x, int y, int z) {

              this.location = new Point3D(x, y, z);

           }

           @Override //注釋是重寫方法

           public Point3D getLocation() {

              return location; //返回是子類的類型而不是原來的類型了

           }

          } 代碼打包下載

          posted on 2007-08-06 12:50 王君 閱讀(216) 評(píng)論(0)  編輯  收藏 所屬分類: J2SE
          主站蜘蛛池模板: 玉树县| 沁阳市| 德格县| 曲松县| 阿拉善盟| 噶尔县| 航空| 略阳县| 洛隆县| 隆回县| 扬中市| 军事| 山阳县| 德保县| 临湘市| 阿城市| 类乌齐县| 宁陵县| 搜索| 伊川县| 运城市| 丰都县| 高阳县| 惠州市| 华坪县| 扬州市| 台前县| 武宣县| 贡觉县| 阿合奇县| 齐齐哈尔市| 石嘴山市| 长丰县| 武夷山市| 广水市| 茂名市| 桐庐县| 卢龙县| 宕昌县| 会泽县| 漯河市|