추상 메서드 (Execute())를 비롯한 몇 가지 메서드가 포함 된 추상 클래스가 있습니다.이 메서드는 자식 클래스에서 재정의됩니다. 이제 이벤트가 발생하고 (응용 프로그램의 어딘가에서), 이 이벤트에는 기본 클래스에 핸들러가 있습니다.이 핸들러에서 Execute를 호출합니다. 이제 chilobject의 메소드가 실행됩니다. 약간 혼란 스럽습니다. 어떻게 작동합니까?기본 클래스의 추상 메서드를 재정의합니다.
0
A
답변
0
이 문제를 생각하는 한 가지 방법은 메시지 전달이라는 측면입니다. 인스턴스 메서드 안에 Execute()
을 호출하면 "메시지"Execute
이 현재 개체 (즉 this
)으로 전송됩니다. 현재 개체는 자식 클래스의 인스턴스이므로 해당 메시지를 보내는 명령의 작성 위치에 관계없이 해당 클래스의 모든 인스턴스에 대해 정의 된대로 수신 된 메시지 "Execute()
"을 처리합니다.
(귀하의 질문이 기술적으로 어떻게 구현 되었는가? 간단하게 대답하면 유감스럽게 생각합니다.) 일반적으로 객체의 클래스는 나머지 데이터와 함께 저장되며, 적절한 메서드, 즉 해당 객체에 대한 특정 메시지에 어떻게 대처할 것인가).
+1
내보기에서 메서드와 메시지의 근본적인 차이점은 개체의 메서드를 호출 할 때 해당 메서드의 클래스에 메서드가 전달된다는 것입니다. 메시지를 전달하면 "이해할 수없는 메시지"로 끝날 수 있습니다. –
0
이것은 런타임 다형성 (dynamic binding라고도 함)입니다.
관련 문제
- 1. 추상 메서드가 추상 메서드를 재정의합니다.
- 2. 추상 기본 클래스의 모호한 상속 :
- 3. 추상 기본 클래스의 C++ 컬렉션
- 4. prototype.js 메서드를 재정의합니다.
- 5. 추상 기본 클래스의 기본 생성자를 정의하십시오.
- 6. AS3 및 getDefinitionByName()을 사용하여 동적으로로드되는 클래스의 public 메서드를 재정의합니다.
- 7. 추상 클래스의 메소드
- 8. 추상 기본 클래스의 컴파일러 생성 소멸자가 가상일까요?
- 9. 일반 추상 클래스의 기본 생성자 얻기
- 10. Rhino에서 추상 클래스의 기본 동작 모의
- 11. 요약 IEqualityComparer 구현을 사용하거나 기본 비교자를 사용하여 고유 메서드를 재정의합니다.
- 12. 가상 클래스의 추상 메서드
- 13. 추상 클래스의 속성 가시성
- 14. JTextPane에서 TAB의 기본 동작을 재정의합니다.
- 15. 디버깅을위한 클래스의 기본 메서드를 사용하고 계십니까?
- 16. 파생 클래스가 기본 클래스의 메서드를 재정의하는지 확인
- 17. 추상 클래스의 속성 재정의
- 18. quartz.net 추상 기본 클래스
- 19. 추상 클래스의 생성자?
- 20. 추상 클래스의 그룹 메서드
- 21. 추상 클래스의 목적은 무엇입니까?
- 22. 추상 클래스의 데이터 보호
- 23. 추상 클래스의 올바른 사용
- 24. ICollection을 상속받은 추상 기본 클래스
- 25. 추상 클래스의 C++ 및 상속
- 26. 기본 클래스의 정적 메서드를 사용하여 상속 된 클래스를 인스턴스화합니다.
- 27. PHP OO : 추상 클래스의 속성 재정의
- 28. Django 기본 추상 클래스의 하위 클래스에서 필드 제거
- 29. 추상 클래스의 하위 클래스에 대한 기본 생성자를 어떻게 선언합니까?
- 30. 추상 기본 클래스 및 해당 하위 클래스의 WCF DataContract
실제로 메소드 전달의 세부 사항에 관심이 있습니까? 설명하는 메커니즘을 종종 "템플릿 메서드"- 패턴이라고합니다. 당신은 그것에 대한 많은 정보를 찾을 수 있어야합니다. – kloffy