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;} } }
public int A(int id) { ID = id; return ID; } 定义成final,一旦方法被调用传递进值就不能被改变了
一样的啊,定义成私有变量,然后写get函数获取,不写set函数设置就行了
写成private就可以了,并且不提供修改的接口给外界就ok了
C#中那是属性,不是方法,可能java只能用方法来实现
定义为私有的 提供给外部get()方法就可以 或者定义为final int a = 0;final 就是说明此变量不可以改变
设置私有变量,只提供一个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
final就行了,在构造函数进行初始化 对 final int XXX;写void setXXX(int X) 写法是错的,都通不过编译
public int A(int id) {
ID = id;
return ID;
}
定义成final,一旦方法被调用传递进值就不能被改变了
C#中那是属性,不是方法,可能java只能用方法来实现
或者定义为final int a = 0;final 就是说明此变量不可以改变
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
对 final int XXX;写void setXXX(int X)
写法是错的,都通不过编译