【发布时间】:2017-10-13 16:50:22
【问题描述】:
我目前正在学习我的 java 类中的继承。而且我不知道为什么我不能在我的子类中使用 super 变量“ID”。我的储蓄类构造函数有什么问题?此外,我不允许将帐户中的实例变量更改为公共。
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 在帐户中有私人访问权限”
public class Savings extends Account
{
// instance variables - replace the example below with your own
private boolean active;
/**
* Constructor for objects of class Savings
*/
public Savings(String IDNumber, double cashBalance)
{
super(ID);
super(balance);
active = null;
}
【问题讨论】:
-
super(...)并不意味着“从超类设置这个实例变量”;它的意思是“调用特定的超类构造函数,传递这些参数”。 -
Private 具有意义——JLS 详细解释了所有这些。简而言之,私人绝对意味着:它是私人的。而且在您的示例中,ID 甚至都没有值,因此调用不存在的具有不可访问的值的超级构造函数几乎没有意义。
标签: java inheritance subclass superclass super