<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    工作小驛

    Ninja!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      103 Posts :: 0 Stories :: 36 Comments :: 0 Trackbacks

     

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

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

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

    實踐: 重載的例子

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

    public static void main(String[] args){

        MethodOverloading m = new MethodOverloading();

        m.recieve(3456);

        m.recieve(34.56);

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

    }
    }

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

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

     public class overload {

    //若干個相同類型的參數,用“...”代替

      public void pri(String... strings ){

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

           System.out.print(str);

       }

       public static void main(String[] args){

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

       }

    } 上述例子打包下載

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

    class Point2D { //定義二維的點

     protected int x, y;

     public Point2D() {

        this.x=0;

        this.y=0;}

     public Point2D(int x, int y) {

        this.x = x;

        this.y = y;

     }}

    //定義三維的點,繼承二維

    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; //在這里已經變成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 王君 閱讀(214) 評論(0)  編輯  收藏 所屬分類: J2SE
    主站蜘蛛池模板: 久久久国产精品福利免费| 曰批免费视频播放免费| 久久久久国产精品免费网站| 亚洲国产香蕉人人爽成AV片久久| 猫咪免费人成在线网站| 免费一级毛片不卡在线播放| 精品一区二区三区免费毛片| 国产大片91精品免费观看男同| 亚洲av乱码一区二区三区按摩| 国产女高清在线看免费观看| 特级毛片在线大全免费播放| 亚洲日韩VA无码中文字幕| 两个人看的www免费视频中文| 亚洲阿v天堂在线| 无码人妻久久一区二区三区免费 | 中文字幕精品亚洲无线码一区| 中文字幕手机在线免费看电影| 亚洲VA中文字幕无码毛片| 国产精品永久免费10000| 中文字幕无码亚洲欧洲日韩| 国产午夜影视大全免费观看| 无人视频免费观看免费视频 | 拔擦拔擦8x华人免费久久| 深夜A级毛片视频免费| 国产精品亚洲аv无码播放| 91精品免费不卡在线观看| 一本色道久久88—综合亚洲精品 | 亚洲V无码一区二区三区四区观看| 亚洲免费视频网站| 亚洲狠狠成人综合网| 亚洲av无码天堂一区二区三区| 中文字幕久精品免费视频| 亚洲一区二区三区四区视频| 四虎影库久免费视频| 精品在线免费观看| 亚洲最大中文字幕无码网站 | 亚洲av日韩综合一区久热| 亚洲中文字幕在线第六区| 久久久久免费看成人影片| 亚洲国产成人精品无码区花野真一 | 亚洲国产成a人v在线|