java怎么定义只读的变量,并不是不可以修改的。。只能内部修改

挨踢民工的乐章 2011-08-30 08:20:09

class A
{
xxxx xxx int ID;
public A(id)
{
ID = id;
}
}


让ID这个变量只能被读取值,无法被修改,就像C#中的

class A
{
private int id;
public A(id)
{
this.id = id;
}
public int ID
{
get{return id;}
}
}
...全文
1750 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
daijope 2011-08-30
  • 打赏
  • 举报
回复
final
末凡 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 leehomwong 的回复:]

引用 3 楼 izard999 的回复:

引用 2 楼 devil26 的回复:

一样的啊,定义成私有变量,然后写get函数获取,不写set函数设置就行了

+1

是的呀~
[/Quote]

同意+1
lxf23250291 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 leehomwong 的回复:]
引用 3 楼 izard999 的回复:

引用 2 楼 devil26 的回复:

一样的啊,定义成私有变量,然后写get函数获取,不写set函数设置就行了

+1

是的呀~
[/Quote]

就这个意思
bawgiitx 2011-08-30
  • 打赏
  • 举报
回复
final就行了,在构造函数进行初始化
对 final int XXX;写void setXXX(int X)
写法是错的,都通不过编译
24K純帥 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 izard999 的回复:]

引用 2 楼 devil26 的回复:

一样的啊,定义成私有变量,然后写get函数获取,不写set函数设置就行了

+1
[/Quote]
是的呀~
Alexander 2011-08-30
  • 打赏
  • 举报
回复
设置私有变量,只提供一个get接口就行。

private int id;

public A(id){
this.id=id;
}

public int getId(){
return(id);
}

PS:
1.关于修饰符:Java类成员的默认访问修饰为所谓的默认类型(因为是默认的,所以SUN就懒得给它定关键字了),其访问权限与C++中的friendly一致。所以在Java类中定义私有成员必须加private关键字。
C#类成员变量的默认访问修饰为private,成员方法的默认访问修饰为internal,所以在C#类中定义私有成员变量完全可以省略修饰符。

class A
{
int id;
public A(id)
{
this.id = id;
}
public int ID
{
get{return id;}
}
}

2.关于C#中的“属性”,在下的个人观点认为其应当是对方法的一种封装。据说由于这种封装机制,使得其访问效率要高于一般方法(内联函数?)。例如对一属性:

int ID
{
set{}
get{return(1);}
}

用ildasm对其反编译可以看出它对应一个句柄ID与其内部的两个函数:
get_ID与set_ID
飓风zj 2011-08-30
  • 打赏
  • 举报
回复
定义为私有的 提供给外部get()方法就可以
或者定义为final int a = 0;final 就是说明此变量不可以改变
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 devil26 的回复:]

一样的啊,定义成私有变量,然后写get函数获取,不写set函数设置就行了
[/Quote]

C#中那是属性,不是方法,可能java只能用方法来实现。。。
2399 2011-08-30
  • 打赏
  • 举报
回复
写成private就可以了,并且不提供修改的接口给外界就ok了
izard999 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 devil26 的回复:]

一样的啊,定义成私有变量,然后写get函数获取,不写set函数设置就行了
[/Quote]
+1
Devil26 2011-08-30
  • 打赏
  • 举报
回复
一样的啊,定义成私有变量,然后写get函数获取,不写set函数设置就行了
ydj552110737 2011-08-30
  • 打赏
  • 举报
回复
private final int ID;

public int A(int id) {
ID = id;
return ID;
}
定义成final,一旦方法被调用传递进值就不能被改变了
  • 打赏
  • 举报
回复
好吧。。还是和C#不一样的。。。
liyang1271989 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lz0625 的回复:]

引用 8 楼 leehomwong 的回复:

引用 3 楼 izard999 的回复:

引用 2 楼 devil26 的回复:

一样的啊,定义成私有变量,然后写get函数获取,不写set函数设置就行了

+1

是的呀~


同意+1
[/Quote]
同意
小笨熊 2011-08-30
  • 打赏
  • 举报
回复
或者就用ls说的用final,最好用配置文件管理,免得以后代码重构还得动代码。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧