>백엔드 개발 >C#.Net 튜토리얼 >C# 보충 지식(4): 상속

C# 보충 지식(4): 상속

黄舟
黄舟원래의
2017-02-07 15:17:081366검색

메소드 재작성:

기본 클래스 메소드는 virtual 키워드를 식별하고 하위 클래스(상속 클래스)의 메소드 재작성은 override 키워드를 식별합니다.

재정의된 메서드는 메서드 이름, 반환 및 허용되는 매개변수 등 기본 클래스와 동일한 유형을 가져야 합니다.

  public class Class1
    {
        public virtual void show(int i)
        {……}
    }
    public class Class2:Class1
    {
        public override void show(int a)
        {……}
    }

새로운 메소드 재작성:

    public class Class1
    {
        protected virtual void show(int i)
        {……}
    }
    public class Class2:Class1
    {
        public new int show(int a)
        {……}
    }

new 문은 동일한 이름을 가진 자체 메소드를 정의합니다. 기본 클래스에 있는 동일한 이름의 메서드와 반환 형식 및 액세스 형식이 다를 수 있습니다.

허용되는 매개변수가 동일한 이름을 가진 기본 클래스 메서드와 다른 경우 new 키워드는 중복되며 이는 일반 재작성과 동일합니다(기본 클래스에는 동일한 메서드가 없으며, 동일한 숨겨진 방법).

override는 기본 클래스 메서드(숨겨진 메서드)의 메서드 본문을 다시 작성하고, new는 동일한 이름(동일한 매개변수를 받음)으로 기본 클래스 메서드를 다시 작성합니다.

상속 종료:

상속 종료 플래그가 봉인되었습니다. 다음 코드는 오류를 컴파일합니다. Class2는 닫힌 클래스 Class1

public sealed class Class1
    {
        public virtual void show(int i)
        {……}
    }
    //public class Class2:Class1
    //{
    //    public override void show(int a)
    //    {……}
    //}

를 상속할 수 없으며 기본 클래스 생성자를 호출합니다.

컴파일러는 먼저 기본 클래스 생성자를 호출한 다음 상속된 클래스 생성자를 호출합니다.

  public class Class1
    {
        public Class1(int i , string j)
        {……}
    }
    public class Class2:Class1
    {
        public Class2(int i,string j,object obj):base(i,j)
        {……}
    }

위 내용은 C#에 대한 약간의 지식(4):상속 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.