在java中导入类

在java中导入类,java,class,import,Java,Class,Import,如果我要导入的类与我要导入的类在同一个包中(我试图扩展前一个类,savingsAccount和SpecialSavings都在同一个帐户中),我应该导入java类吗?我还试图从子类访问父类中的私有变量,但它不允许我访问。这是我的密码: package finance; import finance.SavingsAccount; public class SpecialSavings extends SavingsAccount { public SpecialSavings(do

如果我要导入的类与我要导入的类在同一个包中(我试图扩展前一个类,savingsAccount和SpecialSavings都在同一个帐户中),我应该导入java类吗?我还试图从子类访问父类中的私有变量,但它不允许我访问。这是我的密码:

package finance;

import finance.SavingsAccount;

public class SpecialSavings extends SavingsAccount
{

    public SpecialSavings(double savingsBalance) 
    {
        super.setBalance(savingsBalance);
    }

    if (super.getBalance() > 10000)
    {
        modifyInterestRate(10);
    }

}
以下是SavingsAccount的代码:

 package finance;

 public class SavingsAccount 
 {
private static double annualInterestRate;
private double savingsBalance;//indicates the amount the saver currently has on deposit

public SavingsAccount(double savingsBalance)//default constructor
{
    this.savingsBalance = savingsBalance;
}


public double calculateMonthlyInterest() 
{
    savingsBalance += savingsBalance * ((annualInterestRate/100)/12);
    return savingsBalance;
}

public static void modifyInterestRate(double newValue)
{
    annualInterestRate = newValue;
}
/*-------------getters and setters------------------------*/
public void setBalance(double newValue)
{
    savingsBalance = newValue;
}

public double getBalance()
{
    return savingsBalance;
}



 }
  • 您不需要从同一个包中导入类
  • 不能从其他类访问类的私有变量(除非它是内部类)。如果要使变量对子类可见,请使用
    protected
    ,而不是
    private
  • 此外,如果您试图在任何块之外调用
    super.getBalance()
    ,这是非法的,您应该将其移动到您的某个方法中。对于示例

    public void modify()
    {
        if (super.getBalance() > 10000)
        {
            modifyInterestRate(10);
        }
    }
    
  • 您不需要从同一个包中导入类
  • 不能从其他类访问类的私有变量(除非它是内部类)。如果要使变量对子类可见,请使用
    protected
    ,而不是
    private
  • 此外,如果您试图在任何块之外调用
    super.getBalance()
    ,这是非法的,您应该将其移动到您的某个方法中。对于示例

    public void modify()
    {
        if (super.getBalance() > 10000)
        {
            modifyInterestRate(10);
        }
    }
    

    否。命名空间中的所有类都可见且可用,无需显式导入。

    否。命名空间中的所有类都可见且可用,无需显式导入。

    若要访问
    超级类
    变量,请使
    受保护,但更好的解决方案是为
    私有
    实例变量制作
    受保护的setter/getter
    ,并使用它们。

    要访问
    超类
    变量,请将
    设为受保护的
    ,但更好的解决方案是为
    私有
    实例变量制作
    受保护的setter/getter
    ,并使用它们。

    3个访问修饰符

  • 私人的
  • 保护
  • 公开的
  • 4访问控制

  • 私人的
  • 违约
  • 保护 4公众
  • 由于您在相同的软件包中,因此无需导入

    当您想从父类的子类访问父类私有成员时,非法。
    如果该子类在同一个包中,您可以将要访问的父类的成员设为默认值(即不编写任何访问修饰符),或者如果子类在父包之外,则使用受保护的或公共的。

    3个访问修饰符

  • 私人的
  • 保护
  • 公开的
  • 4访问控制

  • 私人的
  • 违约
  • 保护 4公众
  • 由于您在相同的软件包中,因此无需导入

    当您想从父类的子类访问父类私有成员时,非法。
    如果该子类位于同一个包中,则可以将要访问的父类的成员设为默认值(即不写入任何访问修饰符),或者如果该子类位于父包之外,则使用受保护的或公共的。

    im使用公共的getter?你不能这样做吗?你可以用getters来做,但不能直接做。如果
    x
    someclass
    的私有成员,那么-
    someclass.getX()
    就可以了
    someclass.x
    不是。下面的规范已经将父类方法设置为私有,因此我无法修改它。正如您在上面的代码中所看到的,我正在使用getter和setter,所以eclipse给了我这个错误消息。“隐式超级构造函数SavingsAccount()未定义。必须显式调用另一个构造函数”这是另一个问题。而不是写在评论中——读一下:我使用的getter是公共的吗?你不能这样做吗?你可以用getters来做,但不能直接做。如果
    x
    someclass
    的私有成员,那么-
    someclass.getX()
    就可以了
    someclass.x
    不是。下面的规范已经将父类方法设置为私有,因此我无法修改它。正如您在上面的代码中所看到的,我正在使用getter和setter,所以eclipse给了我这个错误消息。“隐式超级构造函数SavingsAccount()未定义。必须显式调用另一个构造函数”这是另一个问题。不要在评论中写出来,读一下:显示
    SavingsAccount
    的代码,如果是,这也是
    作业
    ,将其添加为标记。显示
    SavingsAccount
    的代码,如果是,这也是
    作业
    ,将其添加为标记。