Java 无法在构造函数中声明私有变量?
我在用Java编程,我在编译下面的代码时遇到了麻烦。表达式的“非法开始”错误显示在Java 无法在构造函数中声明私有变量?,java,constructor,Java,Constructor,我在用Java编程,我在编译下面的代码时遇到了麻烦。表达式的“非法开始”错误显示在 private final int YA; 但是,当我删除所有变量上的私有修饰符时,它可以很好地编译 我一直无法在网上找到解决方案,我的大部分搜索结果都是关于将构造函数私有化的问题,我不想这样做。真正让我感兴趣的是,我编写了另一个类,它遵循相同的格式,构造函数中的私有final变量,它编译时没有问题 我是Java新手,所以我可能会错过一些真正愚蠢的东西。如果是这样,请温柔一点 干杯,谢谢 public clas
private final int YA;
但是,当我删除所有变量上的私有修饰符时,它可以很好地编译
我一直无法在网上找到解决方案,我的大部分搜索结果都是关于将构造函数私有化的问题,我不想这样做。真正让我感兴趣的是,我编写了另一个类,它遵循相同的格式,构造函数中的私有final变量,它编译时没有问题
我是Java新手,所以我可能会错过一些真正愚蠢的东西。如果是这样,请温柔一点
干杯,谢谢
public class IndividualTaxCalculator {
IndividualTaxCalculator(int inYearAssessment) {
private final int YA;
YA = inYearAssessment;
switch (YA) {
case 2013:
private float netEmploymentIncome; // BTC cell H16
private float totalIncome; // BTC cell H27
private float assessableIncome; // BTC cell H31
private float chargeableIncome; // BTC cell H49
private float taxPayableOnChargeable; // BTC cell H51
private float incomeTaxRebate; // BTC cell H53
private float taxPayableAfterRebate; // BTC cell H55
private float parenthoodTaxRebate; // BTC cell H57
private float netTaxPayable; // BTC cell H59
break;
}
}
}
将成员移到构造函数之外:
private final int YA;
IndividualTaxCalculator(int inYearAssessment) {
YA = inYearAssessment;
// ..
}
请不要用大写字母命名非静态成员。这些用于常量
使用
相反。将成员移出构造函数:
private final int YA;
IndividualTaxCalculator(int inYearAssessment) {
YA = inYearAssessment;
// ..
}
请不要用大写字母命名非静态成员。这些用于常量
使用
相反。您只能在这样的成员上使用private/public/protected
public class IndividualTaxCalculator {
private int foo;
private int bar;
....
}
在方法中声明变量时,只能在方法中访问该变量。只能在成员上使用private/public/protected,如下所示
public class IndividualTaxCalculator {
private int foo;
private int bar;
....
}
在方法中声明变量时,只能在方法中访问该变量。在Java中创建类时,其成员变量必须在类内声明,但不能在任何方法外声明。成员变量是您希望在类的任何方法中访问的变量,也是需要访问修饰符(如private)的变量 因此,我对代码的建议是,将所有变量移到构造函数外部声明,如果YA==2013,则在构造函数中初始化它们。因此,要稍微重构一下代码:
public class IndividualTaxCalculator {
private float netEmploymentIncome; // BTC cell H16
private float totalIncome; // BTC cell H27
private float assessableIncome; // BTC cell H31
private float chargeableIncome; // BTC cell H49
private float taxPayableOnChargeable; // BTC cell H51
private float incomeTaxRebate; // BTC cell H53
private float taxPayableAfterRebate; // BTC cell H55
private float parenthoodTaxRebate; // BTC cell H57
private float netTaxPayable; // BTC cell H59
IndividualTaxCalculator(int inYearAssessment) {
switch (inYearAssessment) {
case 2013:
// Initialize the variables here
break;
}
}
}
在Java中创建类时,其成员变量必须在类内声明,但不能在任何方法外声明。成员变量是您希望在类的任何方法中访问的变量,也是需要访问修饰符(如private)的变量 因此,我对代码的建议是,将所有变量移到构造函数外部声明,如果YA==2013,则在构造函数中初始化它们。因此,要稍微重构一下代码:
public class IndividualTaxCalculator {
private float netEmploymentIncome; // BTC cell H16
private float totalIncome; // BTC cell H27
private float assessableIncome; // BTC cell H31
private float chargeableIncome; // BTC cell H49
private float taxPayableOnChargeable; // BTC cell H51
private float incomeTaxRebate; // BTC cell H53
private float taxPayableAfterRebate; // BTC cell H55
private float parenthoodTaxRebate; // BTC cell H57
private float netTaxPayable; // BTC cell H59
IndividualTaxCalculator(int inYearAssessment) {
switch (inYearAssessment) {
case 2013:
// Initialize the variables here
break;
}
}
}
不,你不能。。您可以在构造函数之外声明这些私有变量,并为它们赋值。不,您不能。。您可以在构造函数之外声明这些私有变量,并为它们赋值。阅读:阅读:final不也是大写的吗?我从未见过final是大写的。但是final值是常量。不,它不是。将其指定给后,它将被修复。一个常量是静态的final,对于一个类的每个实例都是一样的。是的,我也认为final变量应该大写,但我回顾了我的材料,它应该再次包含static。谢谢你指出这一点。我想投赞成票,但我认为我没有足够的声誉这么做。期末考试不也是资本化的吗?我从来没有见过用大写字母写的期末考试。但期末考试的价值是恒定的。不,它不是。将其指定给后,它将被修复。一个常量是静态的final,对于一个类的每个实例都是一样的。是的,我也认为final变量应该大写,但我回顾了我的材料,它应该再次包含static。谢谢你指出这一点。我想投赞成票,但我认为我没有足够的声誉这么做。