Java构造方法继承问题
展开全部
你好,很高兴为你解答。
这段代码提示B的构造函数错误。这是因为B继承A,B的构造函数会自动调用A的默认构造函数(即不带参数的构造函数),但A没有定义默认构造函数,所以就会报错。有两种改法:
1)在A中增加默认构造函数。如下:
class
A
{
int
a;
String
name;
String
sex;
A(){
//修改这儿
}
A(int
a,
String
name,
String
sex)
{
this.a
=
a;
this.name
=
name;
this.sex
=
sex;
}
void
ShowMess()
{
}
}
class
B
extends
A
{
int
age;
B(int
a,
String
name,
String
sex,
int
age)
{
this.a=a;
this.name=name;
this.sex=sex;
this.age=age;
this.age
=
age;
}
void
ShowMess()
{
System.out.println("a+name+sex+age");
}
}
2)修改B的构造函数,显式地调用A的非默认构造函数。如下:
class
A
{
int
a;
String
name;
String
sex;
A(int
a,
String
name,
String
sex)
{
this.a
=
a;
this.name
=
name;
this.sex
=
sex;
}
void
ShowMess()
{
}
}
class
B
extends
A
{
int
age;
B(int
a,
String
name,
String
sex,
int
age)
{
super(a,name,sex);
//修改这儿
this.age
=
age;
}
void
ShowMess()
{
System.out.println("a+name+sex+age");
}
}
这段代码提示B的构造函数错误。这是因为B继承A,B的构造函数会自动调用A的默认构造函数(即不带参数的构造函数),但A没有定义默认构造函数,所以就会报错。有两种改法:
1)在A中增加默认构造函数。如下:
class
A
{
int
a;
String
name;
String
sex;
A(){
//修改这儿
}
A(int
a,
String
name,
String
sex)
{
this.a
=
a;
this.name
=
name;
this.sex
=
sex;
}
void
ShowMess()
{
}
}
class
B
extends
A
{
int
age;
B(int
a,
String
name,
String
sex,
int
age)
{
this.a=a;
this.name=name;
this.sex=sex;
this.age=age;
this.age
=
age;
}
void
ShowMess()
{
System.out.println("a+name+sex+age");
}
}
2)修改B的构造函数,显式地调用A的非默认构造函数。如下:
class
A
{
int
a;
String
name;
String
sex;
A(int
a,
String
name,
String
sex)
{
this.a
=
a;
this.name
=
name;
this.sex
=
sex;
}
void
ShowMess()
{
}
}
class
B
extends
A
{
int
age;
B(int
a,
String
name,
String
sex,
int
age)
{
super(a,name,sex);
//修改这儿
this.age
=
age;
}
void
ShowMess()
{
System.out.println("a+name+sex+age");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询