我试图从我的Resident类中调用我的Person类构造函数
人:
public class Person
{
private String name;
private String surname;
private String address1;
private String address2;
private String telephone;
private String faxNumber;
Person(String aName, String aSurname, String aAddress1, String aAddress2, String aTelephone, String aFaxNumber)
{
name = aName;
surname = aSurname;
address1 = aAddress1;
address2 = aAddress2;
telephone = aTelephone;
faxNumber = aFaxNumber;
}
驻地:
public class Resident : Person
{
private String IDNumberPrim;
private String IDNumberSec1;
private String IDNumberSec2;
private String IDNumberSec3;
private String IDNumberSec4;
private String tempID;
private String passportNumber;
Resident(String aIDNumberPrim, String aIDNumberSec1, String aIDNumberSec2, String aIDNumberSec3, String aIDNumberSec4, String aTempId, String aPassportNumber)
我已尝试过base命令,但它永远不会有效。
请帮助!!!
------------ ---------------- UPDATE
问题解决了。
感谢所有帮助和建议
答案 0 :(得分:4)
目前,您的构造函数都默认为private
,因为您尚未包含access modifier。如果Person
构造函数是私有的并且Resident
类是独立的(即,不像Jon Skeet所解释的那样嵌套在Person
中),即使它是从它继承的,它也不会具有可见性构造函数。
只需向其添加修饰符,例如public
,protected
或internal
:
protected Person(
然后你可以正常调用base
:
public Resident()
: base()
{
}
答案 1 :(得分:3)
我已尝试过base命令,但它永远不会有效。
这不是一个“命令”,但绝对有效:
Resident(String aIDNumberPrim, String aIDNumberSec1,String aIDNumberSec2,
String aIDNumberSec3, String aIDNumberSec4, String aTempId,
String aPassportNumber)
: base(...)
{
}
不可否认,目前还不清楚你在这里传递了什么,因为你的参数似乎都没有显示出姓名或地址等等......也许你需要添加更多参数?
编辑:同样如Adam所述,除非Person
在Resident
内被声明为嵌套类型,否则您需要提高Person
构造函数的可见性。如果您只需要在Resident
的程序文本中调用它,那么Resident
构造函数就可以保持私有状态,但您更有可能希望提高其可见性。
(作为旁注,那些参数名称很糟糕 - 为什么用a
作为前缀?)
答案 2 :(得分:0)
如果你想让它的访问权限公开,你应该为构造函数添加public
关键字:
public Person(String aName, String aSurname, String aAddress1,
String aAddress2, String aTelephone, String aFaxNumber)
{
...
}
如果他们在同一个项目上,你也可以使用internal
,或protected
,因为一个是另一个的基础,等等,但这一切都取决于你真正想要访问的修饰符对于ctor来说。
默认访问修饰符为private
,它不允许该类访问外部的任何内容。
答案 3 :(得分:0)
在我看来,这应该有效:
public class Person
{
private String name;
private String surname;
private String address1;
private String address2;
private String telephone;
private String faxNumber;
public Person(String aName, String aSurname, String aAddress1, String aAddress2, String aTelephone, String aFaxNumber)
{
name = aName;
surname = aSurname;
address1 = aAddress1;
address2 = aAddress2;
telephone = aTelephone;
faxNumber = aFaxNumber;
}
public class Resident : Person
{
private String IDNumberPrim;
private String IDNumberSec1;
private String IDNumberSec2;
private String IDNumberSec3;
private String IDNumberSec4;
private String tempID;
private String passportNumber;
Resident(String aIDNumberPrim, String aIDNumberSec1, String aIDNumberSec2, String aIDNumberSec3, String aIDNumberSec4, String aTempId, String aPassportNumber) : base(...)
亲切的问候,亲
答案 4 :(得分:0)
在Resident的构造函数的参数列表中的右括号之后,尝试在大括号之前说':Person(...)',在'...'中提供相应的参数:
Resident(String aName, String aSurname, String aAddress1, String aAddress2, String aTelephone, String aFaxNumber,
String aIDNumberPrim, String aIDNumberSec1, String aIDNumberSec2, String aIDNumberSec3, String aIDNumberSec4, String aTempId, String aPassportNumber)
: Person (aName, aSurname, aAddress1, aAddress2, aTelephone, aFaxNumber)
{
}