Java 如何在超类中使用私有实例变量?

Java 如何在超类中使用私有实例变量?,java,inheritance,subclass,superclass,super,Java,Inheritance,Subclass,Superclass,Super,我目前正在java类中学习继承。我不明白为什么我不能在我的子类中使用super变量“ID”。我的储蓄类构造函数有什么问题?此外,我不允许将account中的实例变量更改为public public class Account { private String ID; private double balance; private int deposits; private int withdrawals; private double service; /** * Construc

我目前正在java类中学习继承。我不明白为什么我不能在我的子类中使用super变量“ID”。我的储蓄类构造函数有什么问题?此外,我不允许将account中的实例变量更改为public

     public class Account
{
private String ID;
private double balance;
private int deposits;
private int withdrawals;
private double service;

/**
 * Constructor for objects of class Account
 */
public Account(String IDNumber, double cashBalance)
{
    ID = IDNumber;
    balance = cashBalance;
    deposits = 0;
    withdrawals = 0;
    service = 0;
}
我收到错误“ID在帐户中具有私人访问权限”

super()
调用父类的构造函数。它与该类的私有变量无关

我想你应该做:

super(IDNumber, cashBalance);
这将调用父类的构造函数,将创建时使用的变量
Savings
传递给
Account


请注意,在类
Savings
中,您将无法访问父变量。为此,您必须将访问权限更改为
protected
protected
允许类本身和子类访问,而
private
只允许类本身访问。

super(…)
并不意味着“从超类设置此实例变量”;它的意思是“调用一个特定的超类构造函数,传递这些参数”。Private的意思是JLS非常详细地解释了所有这些。简而言之,“私人”的意思是绝对的:它是私人的。在您的示例中,ID甚至没有值,因此调用一个不存在的超级构造函数以及一个不可访问的值几乎毫无意义。@ChristophT请接受我的答案,这样其他人就可以很容易地识别正确的答案。5分钟后要求接受有点早。尽管不太可能,但总有一种可能性,那就是其他的东西会带来更大的帮助…@GhostCat没问题。很高兴它解决了你的问题。祝Java好运:)我没有问这个问题。你可能想多注意一下和你说话的人。@GhostCat哈哈,对不起。你的伤口一眼看上去就很相似
super(IDNumber, cashBalance);