【发布时间】:2014-03-01 04:26:29
【问题描述】:
我是 Java 新手,来自 C 背景,我该如何回答“数据抽象可以在 Java 中实现吗?”这个问题。 .
以下是我想回答的问题,如果我的想法有误,请纠正我。
SUSv3 引入了一种名为 pthread_t 的数据类型,但没有指定它的表示形式(如 ulong 或指向结构的指针等),并且必须将其视为不透明数据。
想要处理 pthread_t 数据的用户必须通过诸如 pthread_equal() 之类的函数来使用它,在这种情况下检查是否相等。但是 C 仍然不能阻止用户执行类似 'tid == pthread_self();' 之类的操作尽管 pthread_t 是不透明数据,但在编译时。 运行时行为未知。
Java 作为语言功能的一部分,可以通过在类中的数据成员上引入私有/受保护/包访问说明符并使用对这些数据成员执行相同逻辑的公共成员函数来阻止用户在编译时执行此类操作。
【问题讨论】: