我该如何修复将起作用的代码?
class Sample {
public int a;
private int b;
int c;
}
public class ex {
public static void main(String[] args) {
Sample aClass = new Sample();
aClass.a = 10;
aClass.b = 10;
aClass.c = 10;
}
}
我得到的错误:
公共类型ex必须在其自己的文件中定义
Sample.b字段不可见
答案 0 :(得分:1)
您不能在课外访问私人可变形式。您需要做的就是将private int b;
更改为public int b;
或创建公共setter方法,如所指出的评论之一。
有关进一步的说明,请参阅此answer
希望这会有所帮助。
答案 1 :(得分:0)
private
成员不能在课程之外直接访问。
答案 2 :(得分:0)
class Sample {
public int a;
private int b;
int c;
public void setB(int b){
this.b=b;
}
}
public class ex {
public static void main(String[] args) {
Sample aClass = new Sample();
aClass.a = 10;
aClass.setB(10);//private variable not accessible directly
aClass.c = 10;
}
}
答案 3 :(得分:0)
变量范围在这里很重要。您不能访问范围之外的私有变量。
为此您有两个选择
使变量公开
class Sample {
public int a;
public int b;
int c;
}
public class ex {
public static void main(String[] args) {
Sample aClass = new Sample();
aClass.a = 10;
aClass.b = 10;
aClass.c = 10;
}
}
将变量保持私有状态,并具有 getter和setters
class Sample {
public int a;
private int b;
int c;
public int getB(){
return this.b;
}
public void setB(int val){
this.b = val;
}
}
public class ex {
public static void main(String[] args) {
Sample aClass = new Sample();
aClass.a = 10;
aClass.setB(10);
aClass.c = 10;
}
}
答案 4 :(得分:0)
您必须遵循针对成员的最佳OOP做法。始终创建一个私人成员,并创建一个公共获取者和安置者。
public class Sample {
private int a;
private int b;
private int c;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getC() {
return c;
}
public void setC(int c) {
this.c = c;
}
}
public class ex {
public static void main(String[] args) {
Sample aClass = new Sample();
aClass.setA(10);
aClass.setB(10);
aClass.setC(10);
}
}
答案 5 :(得分:0)
以下概念将解决您的问题
<RadioButton
style="@android:style/Widget.CompoundButton.CheckBox"
...
/>
(a
)之类的对象来访问public int a;
这样的公共变量(您声明为obj.a
)像b这样的私有变量(您声明为aClass.a = 10;
)不能使用像private int b;
这样的对象直接访问。只能在类中访问私有变量,即您需要编写一个setter来做到这一点。以下是您可以尝试实现的完整代码
类样本{ 公共情报 私人int b; int c;
obj.b