현재 위치 - 중국오락넷 - 엔터테인먼트 주제 - 아래 프로그램을 읽고 프로그램의 출력을 작성해 보세요. 클래스 SuperClass { int SuperClass() { System.out.println("

아래 프로그램을 읽고 프로그램의 출력을 작성해 보세요. 클래스 SuperClass { int SuperClass() { System.out.println("

SuperClass::constructor: 데이터=0

SuperClass::constructor: 데이터=2

SubClass::constructor: data=2

< p>SubClass::constructor: data=6

18

가장 살펴봐야 할 것은 다형성 문제입니다! 함수가 어떤 함수를 호출할지 알고 있는지 확인하세요.

프로그램은 new SubClass()로 시작합니다. 하위 클래스를 생성할 때는 먼저 상위 클래스 객체를 생성해야 하므로 매개변수가 없는 상위 클래스 SuperClass() 생성자가 호출됩니다. 멤버변수는 선언만 되므로 초기값은 0이다.

그러나 두 번째 문장인 add(1);가 문제의 핵심입니다. 우리는 Java의 함수가 동적으로 바인딩된다는 것을 알고 있으므로 현재 개체인 개체의 add 메서드가 호출됩니다. 그래서 호출되는 것은 하위 클래스의 add 메소드입니다. 그러면 멤버 변수의 값은 2입니다.

부모 클래스 생성자가 실행된 후 하위 클래스 생성자가 호출되므로 먼저 2를 인쇄한 다음 add(2)를 호출합니다.

그런 다음 메소드 메소드에서 a.add(6)를 실행하십시오. 이 add 메소드도 서브클래스를 호출하므로 멤버 변수의 값은 18입니다. 마지막으로 print 함수가 호출되어 결과를 표시합니다.

copyright 2024중국오락넷