程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 《Effective Java》學習筆記(

《Effective Java》學習筆記(

編輯:關於JAVA

五。C語言結構的替代

如何用Java模擬c語言中的一些結構

第19條:用類代替結構

對於C語言中的結構,Java可以用類來代替,不過你不應讓類的成員變量可以被公開訪問,成員變量應該是private,然後提供一些讀寫操作來操縱這些變量,想比於C或者C++裡的結構類型,這樣的類更為安全,體現了OOP的封裝性。示例代碼

public class Point{

private float x;

private float y;

public float getX(){ return x;}

public float getY(){ return y;}

public void setX(int x){ this.x=x;}

public void setY(int y){ this.y=y;}

}

第20條:用類層次來代替聯合

對於這點,俺不詳細說明了,有興趣的自己看看聯合是怎麼回事。書中舉了著名的shape例子

第21條:用類來代替枚舉結構

Java取消了C語言中的枚舉類型(注意:jdk5.0已經增加了這一特性,有興趣的自己查找下資料),這裡談的是如何在5.0以前模擬這一結構。

C語言:typedef enum{ CIRCLE,RECTANGLE,SQUARE} shape;

Java語言:

public class shape{

private final String name;

public shape(String name) { this.name=name;}

public String toString(){ return name;}

public static final shape CIRCLE=new shape("CIRCLE");

public static final shape RECTANGLE=new shape("RECTANGLE");

public static final shape SQUARE=new shape("SQUARE");

}

以後就可以用shape.CIRCLE,shape.SQUARE來訪問其中的變量,可以看到,Java的實現模型更為安全,它進行了類型檢查。很漂亮的設計!

第22條:使用類和接口來代替函數指針

Java沒有獨立於類或者接口的函數,任何方法都是包含在某個類和實例裡面,所以,在C裡面的函數指針就完全可以用類和接口來代替,很明顯的例子,如compareable接口,某個需要實現排序的數組,在調用

Arrays.sort()時,你可以傳入一個實現了compareable接口的比較器。這就相當於一個函數指針。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved