关于private构造方法的问题

wangwei0008 2007-08-19 01:23:14

1、这个报错
class a
{
private a()
{
}
a(int e)
{
}
}
class d extends a
{
}
2、这个也报错
class a
{
a(int e)
{
}
private a()
{
}

}
class d extends a
{
}
3、这个通过
class a
{
private a(int e)
{
}
a()
{
}

}
class d extends a
{
}
4、这个也通过
class a
{
a()
{
}

private a(int e)
{
}

}
class d extends a
{
}
5、报错
class a
{
private a(int e)
{
}
}
class d extends a
{
}
当一个构造方法被声明为private时,该累是不能被继承的。可是为什么当方法重载时只有那个没有参数的声明为private时候才报错呢 ?而当是只有一个带参数的构造方法被声明为private时候才报错呢??~~
...全文
155 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujun999999 2007-08-19
  • 打赏
  • 举报
回复
楼上正解
zephyr_cc 2007-08-19
  • 打赏
  • 举报
回复
"当一个构造方法被声明为private时,该累是不能被继承的。" 哪说的...

1,2,5你自定义了构造方法,所以编译器不会为你自动添加默认构造方法(不带参数的构造方法).当该类被继承时,器子类的编译器自动添加的默认构造方法会调用父类的默认构造方法,可惜找不到,或者看不到(private),所以报错.

3,4你显示定义了默认构造方法,所以编译通过.

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧