>  기사  >  Java  >  Java에서 다형성 없이 필드 및 정적 메소드에 액세스하는 방법에 대한 자세한 설명

Java에서 다형성 없이 필드 및 정적 메소드에 액세스하는 방법에 대한 자세한 설명

黄舟
黄舟원래의
2017-10-10 10:19:541744검색

아래 편집기는 Java의 필드 및 정적 메소드에 대한 액세스에 다형성(예제 설명)이 없다는 사실을 바탕으로 한 기사를 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리도록 하겠습니다. 편집기를 따라 살펴보겠습니다

1. 메서드 호출을 메서드 본문과 연결하는 것을

2이라고 합니다. 컴파일 타임 바인딩(정적)은 프로그램 컴파일 단계

3에서 참조된 개체의 유형을 결정합니다. 바인딩(동적 바인딩)은 실행 중에 참조된 개체의 실제 유형을 결정하고 실제 유형에 따라 해당 메서드를 호출하는 것을 의미합니다

4. 정적 메서드와 최종 메서드(프라이빗 메서드는 최종 메서드임) 외에도 모두 다른 메소드는 후기 바인딩이며 Java의 모든 메소드는 동적 바인딩을 통해 다형성을 달성합니다

5. 특정 도메인에 액세스하는 동작은 다형성이 아닙니다


package polymorphism; 
 
class SuperField { 
 public int field = 1; 
 
 public int getField() { 
  return field; 
 } 
} 
 
class SubField extends SuperField { 
 public int field = 2; 
  
 public int getField() { 
  return field; 
 } 
  
 public int getSuperField() { 
  return super.field; 
 } 
} 
 
public class FieldPolymorphism { 
 
 public static void main(String[] args) { 
  SuperField sup = new SubField(); 
  System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField()); 
  SubField sub = new SubField(); 
  System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField() + 
    ", sub.getSuperField() = " + sub.getSuperField()); 
 } 
 
}

출력 결과:

sup.field = 1, sup. getField() = 2
sub.field = 2, sub.getField() = 2, sub.getSuperField() = 1

SubField 객체가 수퍼 참조로 변환되면 모든 필드 액세스 작업이 컴파일러에 의해 구문 분석됩니다. , 따라서 다형성이 아닙니다. SubField에는 실제로 필드라는 두 개의 필드가 포함되어 있습니다. 자체 필드는 SuperField에서 상속됩니다. 일반적으로 필드는 직접 액세스할 수 없고 상속할 수 없으며 메서드를 호출하여 액세스할 수 있습니다. 정적 메서드는 다형성이 아니며 단일 개체와 연결되지 않습니다

package polymorphism; 
 
class Super { 
  
 public static String staticMethod() { 
  return "Super staticMethod()"; 
 } 
} 
 
class Sub extends Super { 
 public static String staticMethod() { 
  return "Sub staticMethod()"; 
 } 
} 
 
public class StaticPolymorphism { 
 
 public static void main(String[] args) { 
  Super sup = new Sub(); 
  System.out.println(sup.staticMethod()); 
  System.out.println(Sub.staticMethod()); 
 } 
 
}

출력 결과:

Super staticMethod()Sub staticMethod()

위 내용은 Java에서 다형성 없이 필드 및 정적 메소드에 액세스하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.