《Effective Java》学习笔记(4)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

五。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接口的比较器。这就相当于一个函数指针。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航