初学者 - Java 扩展

Beginner - Java extends

嗨,我今天开始学习 Java,我的代码有问题。 我有 3 个不同的 classes 并希望 int "blz" 获得超级数字的值,然后 "blz" 的值应该打印在主 class 中。

这是我当前的代码: 我的主要 class "Start":

public class Start
{
    public static void main(String[] args)
    {
        Volksbank aufruf = new Volksbank(); //dont know how I can print blz
    }
}

我的第二个class "Bank":

public abstract class Bank {
    private int Kontonummer;
    private int blz;

    public Bank(){}

    public Bank(int bankleitzahl){
         this.blz = bankleitzahl;
    }
} 

我的最后一个 class "Volksbank":

public class Volksbank extends Bank
{
    public Volksbank(int bankleitzahl)
    {
        super(234345);
    }
}

您需要先将 blz 暴露在外部 类。

public abstract class Bank
{
    private int Kontonummer;
    private int blz;

    public Bank(){}

    public Bank(int bankleitzahl)
    {
        this.blz = bankleitzahl;
    }

    public int getBlz()
    {
        return this.blz;
    }
 }

然后你可以从Start:

获取并打印
public class Start
{
    public static void main(String[] args)
    {
        Volksbank aufruf = new Volksbank();
        System.out.println(aufruf.getBlz());
    }
}

您需要添加 "getter" 到您的银行 class:

public abstract class Bank {
    private int Kontonummer;
    private int blz;

    public Bank(){}

    public Bank(int bankleitzahl){
        this.blz = bankleitzahl;
    }

    public int getBlz()
    {
        return blz;
    }
}

public class Volksbank extends Bank
{
    public Volksbank(int bankleitzahl)
    {
        super(bankleitzahl);
    }
}

然后在您的 main 中调用您的 getBlz() 方法:

public class Start
{
    public static void main(String[] args)
    {
        Volksbank aufruf = new Volksbank(234345);
        System.out.println(aufruf.getBlz());
    }
}

定义一个名为

的方法
public int getBlz() {
     return blz;
}

超级class.

public class Start
{
    public static void main(String[] args)
    {
        Volksbank aufruf = new Volksbank(); //dont know how I can print blz
        System.out.println(aufruf.getBlz());
    }
}

使用模式getter/setter,更喜欢使用摘要class作为左类型来保证合同约定。

public class Start
{
    public static void main(String[] args)
    {
        Bank aufruf = new Volksbank(); //dont know how I can print blz
        System.out.println(aufruf.getBlz());
    }
}


    public abstract class Bank
    {
        private int Kontonummer;
        private int blz;

        public Bank(){}

        public Bank(int bankleitzahl)
        {
             this.blz = bankleitzahl;
        }

        public int getBlz(){
            return blz;
        }
     } 

您无法访问它,因为它是 private 只有声明它的 class 才能看到它。

因此您必须为该变量声明 public getter 才能获得它的值

public abstract class Bank
{
    private int Kontonummer;
    private int blz;

    public Bank(){}

    public Bank(int bankleitzahl)
    {
        this.blz = bankleitzahl;
    }

    public int getBlz() //public getter to access blz value
    {
        return this.blz;
    }
 }

您可以通过 getter 访问它:-

public class Start
{
    public static void main(String[] args)
    {
        Volksbank aufruf = new Volksbank(234345);
        System.out.println(aufruf.getBlz());
    }
}

如果您想设置它的值,您必须为该变量声明 setter

创建一个名为 getblz() 的方法,它将 return blz 的值。 由于您是初学者,我不确定您是否了解 getter 或 setter 方法。我看得出来你在努力学习继承,抽象 类.

了解更多 getter 和 setter

How do getters and setters work?

Java: Getters and Setters

还有一件事我想提一下,您在 Volksbank 中有参数化构造函数。但是当你在 main 中创建 Volksbank 的对象时,你应该在创建对象时传递 int 参数。尽管如果你不通过 jvm 将为你创建默认构造函数。

public class Start {

 public static void main(String[] args) {
  
     {
         Volksbank aufruf = new Volksbank(100); 
         System.out.println("Tha value of BLZ is"+aufruf.getblz()); 
       
         
     }
 }

}

 abstract class Bank
{
    private int Kontonummer;
    private int blz;

    public Bank(){}

    public Bank(int bankleitzahl)
    {
         this.blz = bankleitzahl;
         System.out.println("blz :"+blz);
    }
    
    public int getblz()
    {
     return blz;
    }
    
 }

  class Volksbank extends Bank
 {
     public Volksbank(int bankleitzahl)
     {
     
         super(234345);
    
         System.out.println("bankleitzahl :"+bankleitzahl);
     }
     
   
 }