我有一个超类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;
}
}
我想从主类访问非常用方法或如何从超类人员访问getnoOfPub和getMembNo方法?
答案 0 :(得分:1)
您可以通过检查对象的类型并将其转换为相关子类的类型来访问非常用方法,但这不是您希望在基类的代码中执行的操作
在Person的方法中,您可以写:
public void someMethod ()
{
String id = null;
if (this instanceof Member) {
Member member = (Member) this;
id = member.getMembNo ();
}
}
虽然这是有效的语法,但这是一个非常糟糕的做法,因为基类不应该知道它的子类,因为子类可以在写入基类之后很久写入,所以编写者基类不能假设他们知道所有扩展其基类的子类。
答案 1 :(得分:0)
很难回答这个问题,因为它非常广泛。但我会回答常见的错误:
Person
投射到子类Member
或Author
并使用您的方法。Member
或Author
的变量,然后使用这些方法。