猿问

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

public abstract class Test {


    public static void test(){


    }


    public abstract void test();


}

我觉得这样可以的啊~~为什么编译失败。


吃鸡游戏
浏览 582回答 5
5回答

冉冉说

这是因为静态方法和实例方法的签名不能相同,因为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");    }}

慕森王

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

素胚勾勒不出你

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

精慕HU

java中的重载和重写,也不容许有这样的规则。
随时随地看视频慕课网APP

相关分类

Java
我要回答