为了账号安全,请及时绑定邮箱和手机立即绑定

抽象类的静态方法和抽象方法为什么不能同名同参?

抽象类的静态方法和抽象方法为什么不能同名同参?

吃鸡游戏 2019-03-12 13:15:48
public abstract class Test {    public static void test(){    }    public abstract void test();}我觉得这样可以的啊~~为什么编译失败。
查看完整描述

5 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

这是因为静态方法和实例方法的签名不能相同,因为java允许在实例对象上调用类静态方法,正是因为有这个允许,所以不能有相同签名的方法,看例子:


public class Test {


    // public void main(String[] args) {} // Error


    public static void main(String[] args) {

        Test.hello(); // OK

        new Test().hello(); // OK

    }


    public static void hello() {

        System.out.println("hi");

    }

}


查看完整回答
反对 回复 2019-04-19
?
慕森王

TA贡献1777条经验 获得超3个赞

那你说jvm应该执行谁呢?
就是都是正常的方法也不能同名同参啊,jvm会傻的

查看完整回答
反对 回复 2019-04-19
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

不管是静态还是抽象方法都是类来定义的,既然都是类来定义那它们肯定不能同名同参。


查看完整回答
反对 回复 2019-04-19
?
精慕HU

TA贡献1845条经验 获得超8个赞

java中的重载和重写,也不容许有这样的规则。


查看完整回答
反对 回复 2019-04-19
  • 5 回答
  • 0 关注
  • 581 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信