如何获取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 save
。 Source.
哦,还有,您可能不应该设置 Account s = null;
然后尝试从中打印值。
你的问题出在代码上:
Account s = null;
在方法display
中classSavings
.
感觉你的主要objective是打印超classAccount
字段的值cusId
,cusAccountid
,cusName;
.如果这是正确的,这可以通过调用您在 Account
class 中声明的 public getter 来实现。但是如果你想访问当前实例的字段,那么你应该使用 this
而不是实例化新变量 s
。因此,不要使用 s.getCusId()
,而是使用 this.getCusId()
等等。
这是我的摘要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 save
。 Source.
哦,还有,您可能不应该设置 Account s = null;
然后尝试从中打印值。
你的问题出在代码上:
Account s = null;
在方法display
中classSavings
.
感觉你的主要objective是打印超classAccount
字段的值cusId
,cusAccountid
,cusName;
.如果这是正确的,这可以通过调用您在 Account
class 中声明的 public getter 来实现。但是如果你想访问当前实例的字段,那么你应该使用 this
而不是实例化新变量 s
。因此,不要使用 s.getCusId()
,而是使用 this.getCusId()
等等。