Java 从另一个子类中不可用的超类调用子类方法
我有一个超类Java 从另一个子类中不可用的超类调用子类方法,java,Java,我有一个超类Person和两个子类Author和Member,如下所示 public class Author extends Person { public Author(String fName, String lName, int noOfPublications){ ----// set } public String getnoOfPub(){ return noOfPublications; } } public class
Person
和两个子类Author
和Member
,如下所示
public class Author extends Person {
public Author(String fName, String lName, int noOfPublications){
----// set
}
public String getnoOfPub(){
return noOfPublications;
}
}
public class Member extends Person {
public Member(String fName, String lName, int memberNo){
----// set
}
public String getMembNo(){
return memberNo;
}
}
我想从main类访问非通用方法,或者如何从superclass person访问getnoOfPub和getMembNo方法?您可以通过检查对象的类型并将其强制转换为相关子类的类型来访问非通用方法,但这不是您希望在基类代码中执行的操作 在Person方法中,您可以编写:
public void someMethod ()
{
String id = null;
if (this instanceof Member) {
Member member = (Member) this;
id = member.getMembNo ();
}
}
虽然这是有效的语法,但这是一种非常糟糕的做法,因为基类不应该知道它的子类,因为子类可以在基类编写之后很久再编写,因此,基类的作者不能假设他们知道所有扩展基类的子类。这个问题很难回答,因为它非常广泛。但我会回答常见的错误:
Person
强制转换为子类Member
或Author
,并使用您的方法Member
或Author
变量,然后使用这些方法