찾다

 >  Q&A  >  본문

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

public abstract class Test {

    public static void test(){

    }

    public abstract void test();

}

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

PHP中文网PHP中文网2889일 전627

모든 응답(5)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-17 18:02:38

    이것은 Java가 인스턴스 객체에 대해 클래스 정적 메서드 호출을 허용하기 때문에 정적 메서드와 인스턴스 메서드의 서명이 동일할 수 없기 때문입니다. 이 권한 때문에 동일한 서명을 가진 메서드가 있을 수 없습니다. 예를 참조하세요.

    으아악

    회신하다
    0
  • 阿神

    阿神2017-04-17 18:02:38

    JVM은 누구를 처형해야 한다고 생각하시나요?
    모두 일반적인 메소드라 할지라도 동일한 이름과 동일한 매개변수를 가질 수 없습니다. jvm은 바보가 될 것입니다

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 18:02:38

    메서드 서명: 메소드의 고유성은 메서드 이름매개변수 데이터 유형

    에 의해 결정됩니다.

    위 두 메소드의 메소드 이름과 매개변수가 일치하여 컴파일 과정에서 오류가 발생합니다

    TestMethod.java:6: 오류: test()

    메소드가 이미 TestMethod 클래스에 정의되어 있습니다. 으아악

    Java의 동적 바인딩 기능

    과 관련이 있습니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 18:02:38

    정적 메서드와 추상 메서드는 모두 클래스로 정의되므로 이름과 매개변수가 동일하면 안 됩니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 18:02:38

    Java의 오버로드 및 재작성은 이러한 규칙을 허용하지 않습니다.

    회신하다
    0
  • 취소회신하다