2011-03-15 3 views
3

오늘 인터뷰에서이 질문을 받았지만 이해할 수 없습니다. 나는 시작부터 진보 된 질문에 이르기까지 모든 것을 요구 받았다. 상속과 다형성에 대해 설명하고 있었는데이 질문이 떠 올랐습니다. 분명히 [C#/C++] 클래스의 모든 메서드를 재정의하려 시도한 적이 없지만 특정 메서드 (예 : .ToString)를 재정의하는 데 필요한 것이 있다는 것을 인식하지 못했습니다. 질문을 잘못 해석했거나 필요한 것이 있습니까? 그렇다면 무엇이이 요구 사항을 강제합니까?.NET에서 함수를 재정의하려면 무엇이 필요합니까?

답변

9
  • 기본 클래스는 기본 클래스의 메서드가 표시되어야합니다 sealed
  • virtual이나 abstract
+0

감사합니다. 이것은 정확히 내가 인터뷰하는 사람이 찾고 있다고 생각하는 것입니다. 더 일찍 당신에게 돌아 가지 못해서 사과드립니다. – Justin

1

당신이 virtual 또는 abstract로 선언해야합니다 재정의하는 방법 (그리고이 아니어야합니다 비 밀폐형). 그렇지 않으면 에만을 숨길 수 있습니다.

1

C++과 C#에서는 기본 클래스 함수를 virtual으로 선언해야합니다. 그렇지 않으면 동일한 이름과 서명을 가진 파생 클래스의 함수가 기본 클래스 버전을 숨 깁니다.

+0

좋아, 이제 이걸 이해하기 시작했다. 따라서 [C#에서] 기본 클래스를 "가상"이라고 선언하면 파생 클래스는 동일한 이름과 특성을 갖지만 동일한 "기능"을 갖게됩니다. 즉, 파생 클래스 함수는 방법은 똑같은가? – Justin

+0

기본 클래스 * function *을 클래스가 아닌 가상으로 표시해야합니다. 파생 클래스에서 함수를 재정의하지 않는 한 동일한 기능을 갖습니다. –

0

재정의하려는 방법은 virtual 또는 abstract으로 표시해야합니다.

0

당신이 다형성과 상속을 이해한다면, 나는 당신이 질문을 지나치게 생각하고있는 것처럼 느낍니다. 제 말은 C# 오버라이드가 다음과 같이 간단하다는 것입니다.

public override double parentFunction() 
    { 
    //child implementation 
    } 

... 그리고 부모 함수는 가상으로 delcared해야합니다.

질문을 축 어적으로 듣지 않고도 면접관이 무엇을 찾고 있었는지 말할 수 없습니다. 면접관과의 경험은 그들이 당신이 일반성을 이해하고 있는지 누가 알기를 바라는 것입니다. 나는 당신이 직업을 얻는 지 알아내는 것이 궁금 할 것이다.) 행운을 빌어 요!

+0

안녕하세요, 귀하의 답변에 진심으로 감사 드리며 이전에 귀하에게 회신 해 드리고 싶습니다. 나는 극도의 스트레스를 받았고 가장 열심히 질문을하기 시작 했으므로 나는 편한 것이 아니었고 가장 쉬운 질문조차도 망쳤습니다. 그러나 일은 장거리 였고 이미 취업 했으므로 아무 것도 없습니다. 다시 한 번 감사드립니다! – Justin

관련 문제