为什么我不能在非公开课上参加公开课?

时间:2018-10-12 05:50:18

标签: java

我该如何修复将起作用的代码?

  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字段不可见

6 个答案:

答案 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)

变量范围在这里很重要。您不能访问范围之外的私有变量。

为此您有两个选择

  1. 使变量公开

    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;
      }
    }
    
  2. 将变量保持私有状态,并具有 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)

以下概念将解决您的问题

  1. 可以使用诸如<RadioButton style="@android:style/Widget.CompoundButton.CheckBox" ... /> a)之类的对象来访问public int a;这样的公共变量(您声明为obj.a
  2. 像b这样的私有变量(您声明为aClass.a = 10;)不能使用像private int b;这样的对象直接访问。只能在类中访问私有变量,即您需要编写一个setter来做到这一点。以下是您可以尝试实现的完整代码

    类样本{      公共情报       私人int b;      int c;

    obj.b