如何获取sub class中Abstract class的字段(CORE JAVA)

How to get the fields of Abstract class in sub class (CORE JAVA)

这是我的摘要class

我无法通过 subclass

中的显示方法打印摘要 class 中的字段
public abstract  class Account {
    private int cusId;
    private int cusAccountid;
    private String cusName;

    Account(int cusId, int cusAccountid,String cusName){
        this.cusId=cusId;
        this.cusName=cusName;
        this.cusAccountid=cusAccountid;             
    } 

    public int getCusId() {
        return cusId;
    }

    public int getCusAccountid() {
        return cusAccountid;
    }

    public String getCusName() {
        return cusName;
    }

    abstract public void display();    
}

我只是从 (Savings class)

扩展了这个摘要 class(account)
public class Savings extends Account{
    private int savId;
    private String  savBranch; 

    Savings(int cusId, int cusAccountid,String cusName,int savId, String savBranch) {
        super(cusId,cusAccountid,cusName);
        this.savId= savId;
        this.savBranch=savBranch;
       }

    @Override
    public void display() {
        Account s = null;
        System.out.println(s.getCusId()+s.getCusAccountid()+s.getCusName()+savId+savBranch);        
    }                
}

这是我的 MAIN

public class Bank {

    public static void main(String[] arg){

        Savings sc = new Savings(2,2,"ram",4,"thambaram");
        sc.display();
    }

}

并显示运行时错误

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>
    at com.trying.Savings.display(Savings.java:22)
    at com.trying.Bank.main(Bank.java:14)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

将储蓄class的显示方式改成这样(修饰符public即可访问):

@Override
public void display() {

    System.out.println(this.getCusId()+" "+this.getCusAccountid()+" "+this.getCusName()+" "+savId+savBranch);

}

您正在创建一个空帐户对象并试图显示其不正确的字段。

通过快速搜索您的 exact 错误,我发现 this 这表明它是 Netbeans 中的错误。

如果您使用的是 Netbeans,请转至 Build -> Compiling 并取消选中 Compile on saveSource.

哦,还有,您可能不应该设置 Account s = null; 然后尝试从中打印值。

你的问题出在代码上:

Account s = null;

在方法display中classSavings.

感觉你的主要objective是打印超classAccount字段的值cusId,cusAccountid,cusName;.如果这是正确的,这可以通过调用您在 Account class 中声明的 public getter 来实现。但是如果你想访问当前实例的字段,那么你应该使用 this 而不是实例化新变量 s。因此,不要使用 s.getCusId(),而是使用 this.getCusId() 等等。