重写main方法的一个问题

沙子 2011-07-26 08:54:32
举个例子:
public class Test {
public static void main(String[] args) {

System.out.println("Test");
}
}

class B extends Test {
public static void main(String[] args){
System.out.println("B");
}

}
对于static,子类与父类必须是一样的,要么同时存在,要么同时不存在,都没错。
对于public,同时存在同时不存在也没问题,另外只去掉Test类main的public也没错,但是如果只去掉B类main的public就会出错。这是问什么呢?
哪位给解释一下啊?
...全文
238 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hepeng_8 2011-07-26
  • 打赏
  • 举报
回复
main方法只弄有一个把,没那样做过
WayneXuan 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lequery 的回复:]

两个都写public一点意义都没有
如果不写他默认的是private
而JAVA明确规定子类的方法要比父类更宽
你子类写个重载或覆盖父类的私有方法是没有意义的
[/Quote]默认不是private,是友好的
caipan1234567 2011-07-26
  • 打赏
  • 举报
回复
子类覆盖的语法,不是有 子类的方法不能别被覆盖的方法有更严格的访问控制,你如果不写,就是默认的,默认的,肯定比public 更严格。
沙子 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lingduit 的回复:]
多态。他会去执行子类的方法,如果找不到就去父类找,不管main方法多么特殊,是static方法就不能被重写,因此如果子类出现父类的static方法,其实是一个新方法,你去掉就没有方法了,咋执行?
[/Quote]
看了你说的好多遍,“他会去执行子类的方法”中的他是谁?另外不能被重写是多态问题吗?这个应该是覆盖了。不过因为2楼的回答,还是让我明白了原因:“子类覆盖的方法不能比父类被覆盖的方法的访问权限更严格”
沙子 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lequery 的回复:]
如果不写他默认的是private
[/Quote]
如果不写好像不是private
yaganblw 2011-07-26
  • 打赏
  • 举报
回复
我想说主方法独立于任何一个类
  • 打赏
  • 举报
回复
多态。他会去执行子类的方法,如果找不到就去父类找,不管main方法多么特殊,是static方法就不能被重写,因此如果子类出现父类的static方法,其实是一个新方法,你去掉就没有方法了,咋执行?
火光闪耀 2011-07-26
  • 打赏
  • 举报
回复
我只知道一个类中 只能有一个public类和一个main方法。
lequery 2011-07-26
  • 打赏
  • 举报
回复
两个都写public一点意义都没有
如果不写他默认的是private
而JAVA明确规定子类的方法要比父类更宽
你子类写个重载或覆盖父类的私有方法是没有意义的
沙子 2011-07-26
  • 打赏
  • 举报
回复
沉到海底,赶快捞起。

62,614

社区成员

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

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