我要做的是从超类及其子类访问信息(变量,方法等)。
如果,我对继承的了解是正确的,通过访问超类,默认情况下我们可以访问它的子类。所以我想我只需要能够访问父(超级)类。
但我该怎么做?
我不打算在这里发布所有代码,这将把这篇文章变成3页。
超类只是创建联系人的通用代码,需要访问超类的类是一个创建arraylist并在arraylist中记录每个联系人的类。
我不是想为我编写代码,但是了解这将如何工作的所有帮助将不胜感激。
为了简短起见,除非需要,否则我不会发布子类。
联系人(超类):
public class Contacts
{
protected String fname;
protected String lname;
protected String email;
protected String phone;
public Contacts(String fname, String lname, String email, String phone)
{
this.fname=fname;
this.lname=lname;
this.email=email;
this.phone=phone;
}
public String getfname()
{
return fname;
}
public void setfname(String first)
{
this.fname=first;
}
public String getlname()
{
return lname;
}
public void setlname(String last)
{
this.lname=last;
}
public String getemail()
{
return email;
}
public void setemail(String e)
{
this.email=e;
}
public String getphone()
{
return phone;
}
public void setphone(String num)
{
this.phone=num;
}
public String getFullName()
{
String full=fname+" "+lname;
return full;
}
我对这段代码做了很多工作,因为我一直试图弄清楚它并不知道从哪里开始。我不认为参数应该为null,我只是将它们包括在内以满足邪恶的编译器。
地址簿:
import java.util.ArrayList;
public class AddressBook
{
Contacts enteredContact = new Contacts(null, null, null, null);
}
这是了解包含内容的子类之一。
朋友(子类):
public class Friend extends Contacts
{
private String dob;
/**
* Constructs a new Friend object. (Insert any further description that is needed)
* @param fname
* @param lname
* @param email
* @param phone
*/
public Friend(String fname, String lname, String email, String phone)
{
super(fname, lname, email, phone);
}
/**
* @return the dob
*/
public String getDob()
{
return dob;
}
/**
* @param dob the dob to set
*/
public void setDob(String dob)
{
this.dob = dob;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
return fname+", "+lname+", "+email+", "+phone+", "+dob;
}
}
答案 0 :(得分:1)
如果我对继承的了解是正确的,那么访问超类 默认情况下,您可以访问它的子类。所以我认为我只需要能够访问父(超级)类。
不,通过访问超类,您只能访问被子类覆盖的子类方法。即使子类是公共的,子类为自己创建的方法也不能被超类的对象访问。
答案 1 :(得分:1)
使用super
function / keyword访问父类。您可以像这样调用父方法
super.methodName();
要访问父构造函数,可以使用super()
方法以下列方式执行此操作。
super(null, null, null, null);
答案 2 :(得分:1)
如果一个类扩展了一个超类,它会继承它的所有成员。可以直接访问的非private
个。
仅供参考,您可以使用super()
构造函数初始化字段。
public class AddressBook {
public AddressBook(String fname, String lname, String email, String phone) {
super(null, null, null, null);
}
}
答案 3 :(得分:0)
如果我对继承的了解是正确的,那么访问超类 默认情况下,您可以访问它的子类。
不,这是倒退。通过访问子类,您可以访问超类的字段,仅限于字段的可见性和最终性。您可以根据需要使用super()
来访问它们。
将继承视为家谱。超类是你的父母。您的父母无法访问您的任何私人领域,但您从其中继承了相当多的私人领域。
答案 4 :(得分:0)
我看到了对超类和子类的基本误解。
在我看来,你的印象是Contacts的子类是fname,lname等?
这些被称为成员,或者在这种情况下更恰当:实例成员。
子类将是一个扩展Contacts的类,如下所示:
public class ContactsSubclass extends Contacts {
...
}