그러나 메서드만 상속받는 것은 아닙니다. 실제로 필드와 속성을 포함하여 거의 모든 클래스 멤버가 상속됩니다. 이전 장에서 설명한 것처럼 점성의 규칙을 기억하십시오. 8-1을 나열하는 것은 두 개의 클래스를 보여줍니다. 최상위 클래스는 ParentClass라고 하며 기본 클래스는 ChildClass라고 합니다. 우리가 원하는 것은 ParentClass의 기존 코드를 사용하여 자식 클래스를 만드는 것입니다. 우리는 Executive 클래스가 동일한 메서드를 갖기를 원하지만 다르게 구현되고 하나의 추가 방법인 관리 직원을 원합니다. 형식이 Object.ToString 메서드를 재정의하지 않으면 한 인스턴스를 다른 인스턴스와 차별화하는 데 거의 사용되지 않는 형식의 정규화된 이름을 반환합니다. 게시 클래스는 Title 속성의 값을 반환하기 위해 Object.ToString을 재정의합니다. C#에서 상속은 한 개체가 부모 개체의 모든 속성과 동작을 자동으로 획득하는 프로세스입니다. 이러한 방식으로 다른 클래스에 정의된 특성 및 동작을 재사용, 확장 또는 수정할 수 있습니다. 자식 클래스 print() 메서드의 새 수정자를 확인합니다.
이렇게 하면 이 메서드는 Parent 클래스 print() 메서드를 숨기고 다형성이 발생하지 않도록 의도를 명시적으로 지정합니다. 새 수정자가 없으면 컴파일러에 이에 주의를 기울이는 경고가 생성됩니다. 다형성에 대한 자세한 내용은 다음 단원에서 확인하십시오. 다음은 C#에 의해 서로 다른 조합으로 지원되는 다양한 상속 유형입니다. 다음 예제는 두 가지 속성을 정의하는 Shape라는 추상 기본 클래스인 면적 및 둘레를 정의합니다. 클래스를 추상 키워드로 표시하는 것 외에도 각 인스턴스 멤버는 추상 키워드로 표시됩니다. 이 경우 Shape는 Object.ToString 메서드를 재정의하여 정규화된 이름이 아니라 형식의 이름을 반환합니다. 또한 호출자가 파생된 클래스의 인스턴스의 영역과 둘레를 쉽게 검색할 수 있도록 하는 두 정적 멤버인 GetArea 및 GetPerimeter을 정의합니다. 파생 된 클래스의 인스턴스를 이러한 메서드 중 하나에 전달 하는 경우 런타임 파생 된 클래스의 메서드 재정의 를 호출 합니다. 이 예제를 실행하면 Dog 클래스에 대해 Greet() 메서드를 정의하지 않았음에도 Animal 클래스에서 이 메서드를 상속하기 때문에 인사하는 방법을 알고 있습니다.
그러나이 인사말은 약간 익명이므로 어떤 동물인지 알 면 사용자 지정해 보겠습니다: C#가 다른 클래스에서 구문적으로 상속되는 방법은 : 연산자를 사용하는 것입니다. 다음 예제에서는 Publication 클래스의 소스 코드와 Publication.PublicationType 속성에서 반환되는 게시 유형 열거형을 보여 주었습니다. Object에서 상속하는 멤버 외에도 Publication 클래스는 다음과 같은 고유 멤버 및 멤버 재정의를 정의합니다.