2009-07-01 3 views
0

C#은 매우 흥미 롭습니다 ...하지만 불행히도 (또는 다행히도!) OOP 규칙을 구현하는 데 많은 기능이 있습니다 .... 그들은 다른 machanisms을 가지고 있으며 때로는 나를 만들어줍니다. 혼란 스럽네요 ....가장 좋은 방법이나 모범 사례 - OOP 규칙을 배우기위한 C#

가상, 새, ... 수정 자들은 C#에서 다른 규칙을 가지고 있습니다 ... 그래서 OOP 규칙을 배우고 그것을 쉽게 사용하는 가장 좋은 방법이나 모범 사례는 무엇입니까?

그래서 OOP 규칙을 학습하고이를 쉽게 사용하기위한 최선의 방법이나 모범 사례는 무엇입니까?

+1

이 게시물을 참조하십시오 : http://stackoverflow.com/questions/159978/c-keyword-usage-virtualoverride-vs-new –

+0

우수한 링크를! 당신에게 많은 감사합니다 – odiseh

답변

2

가장 좋은 방법은 fundamental source에서 OOP 원리 (캡슐화, 상속 및 다형성)를 배우는 것입니다. 나중에 특정 언어 구현에 대해 걱정하십시오. 기본 개념을 정말로 이해하면 언어의 특성을 배우고 적용하고 익히는 것이 쉬워집니다.

3

배울 수있는 가장 좋은 방법은 일을 단순하게 유지하고 (프로그램) 많이 연습하는 것입니다. 가상/새/재정에 관한 , 세 가지 경우가 있습니다

  1. 가상 + 재정 - 파생 클래스의 사용은 기본 클래스에서 가상 및 오버라이드 (override)에서와 같이 :

    class BaseClass 
    {  
        public void virtual Test(){...} 
    } 
    class DerivedClass: BaseClass 
    { 
        public void override Test(){...} 
    } 
    
  2. 추상 + 재정 -베이스 부재가 몸을 정의하지 않습니다 이전 케이스의 변형이된다

    abstract class BaseClass 
    { 
        public void abstract Test(){...} 
    } 
    class DerivedClass: BaseClass 
    { 
        public void override Test(){...} 
    } 
    
  3. 없음 수정 - 유용 어이다 당신이 메서드를 재정 계획이없는 엉 :

    class BaseClass 
    { 
        public void Test(){...} 
    } 
    class DerivedClass: BaseClass 
    { 
        public void OtherMethod(){...} 
    } 
    

    을이 경우 OtherMethodTest 선정 된 경우, 경고가 될 것이다. 실제로 그것은 기본 방법과 충돌합니다. 당신은 내가 가능한 경우 다소 혼란 때문에 new 수정을 피하는 것이 좋습니다,하지만

    abstract class BaseClass 
    { 
        public void Test(){...} 
    } 
    class DerivedClass: BaseClass 
    { 
        public new void Test(){...} 
    } 
    

    에서 같은 new 수정을 추가하여 경고를 제거 할 수 있습니다.

+0

예, 당신이 말했듯이, 우리는 파생 된 클래스의 메소드를 실행하기 위해 new를 사용하는 대신에 마지막으로 쓴 경우 override 수정자를 사용할 수 있습니다 ... 만약 그렇다면, 재정의와 사용의 주된 차이점은 무엇입니까? 새로운? – odiseh

+0

기본이 가상이거나 추상이 아니면 대체를 사용할 수 없습니다 –

+0

pn, 정말 고마워요. – odiseh