>  기사  >  백엔드 개발  >  C# 클래스의 상속을 간략하게 소개하는 샘플 코드

C# 클래스의 상속을 간략하게 소개하는 샘플 코드

黄舟
黄舟원래의
2017-03-28 11:21:301324검색

이 글에서는 주로 C# 클래스의 상속에 관련된 지식을 소개합니다. 참조값이 매우 좋습니다.

상속

클래스는 다른 클래스로부터 상속받을 수 있습니다. C#에서는 클래스 간에 단일 상속만 있습니다. 즉, 클래스에는 직접 기본 클래스가 하나만 있을 수 있습니다. 클래스 간에 상속이 구현되면 하위 클래스는 정적 생성자 및 클래스의 인스턴스 생성자 메서드와 소멸자 메서드. 그러나 기본 클래스의 모든 멤버를 하위 클래스의 멤버로 사용할 수 있더라도 기본 클래스의 멤버마다 액세스 권한이 다르면 파생 클래스가 액세스할 수 있는 멤버도 달라집니다. C#의 상속은 전이적입니다. 클래스 C가 클래스 B에서 파생되고 클래스 B가 클래스 A에서 파생되면 클래스 C는 클래스 B의 모든 멤버를 상속하고 클래스 A의 모든 멤버도 상속합니다(각 기본 클래스의 정적 생성자, 인스턴스 생성 방법 및 소멸자 방법 제외). 하위 클래스(파생 클래스)는 상속을 기반으로 자신의 멤버를 추가할 수 있지만 상위 클래스(기본 클래스)의 상속된 멤버를 제거할 수는 없습니다. 소멸자 메서드의 기능은 클래스의 인스턴스를 파괴하는 것입니다. 다음 기사에서 설명을 요약하겠습니다.

아래 코드 예를 살펴보세요.

using System;
namespace LycheeTest {
  public class TV {
    private int channel = 1; //电视机的频道
    private int volume = 20; //电视机的音量
    public static string model = "39 英寸液晶"; //型号
    /// <summary>
    /// 具体设置电视机的频道和音量,因为只提供给子类使用  /// 所以用 protected 访问权限关键字修饰
    /// </summary>
    /// <param name="ch">具体设置的频道数</param>/// <param name="vol">具体设置的音量值</param>
    protected void Set(int ch, int vol) {
      channel = ch;
      volume = vol;
      Console.WriteLine("设置完毕");
    }
    /// <summary>
    /// 增加频道
    /// </summary>
    public void ChPlus() {
      channel++;
    }
    /// <summary>
    /// 增加音量
    /// </summary>
    public void VolPlus() {
      volume++;
    }
    /// <summary>
    /// 将信息显示在电视机屏幕上
    /// </summary>
    public void Show() {
      Console.WriteLine("电视机型号是:{0}", model);
      Console.WriteLine("频道:{0}", channel);
      Console.WriteLine("音量:{0}", volume);
    }
  }
  public class NewTV: TV {
    public void PlayUDisk() {
      this.Set(0, 30);
      this.Show();
      Console.WriteLine("现在开始播放 U 盘的视频文件......");
    }
  }
  class Program {
    static void Main(string[] args) {
      NewTV myNewTV = new NewTV();
      myNewTV.ChPlus();
      myNewTV.VolPlus();
      myNewTV.Show();
      myNewTV.PlayUDisk();
      Console.ReadKey();
    }
  }
}

위 코드에서 세 번째 코드 줄은 기본 클래스 TV를 정의합니다. 정적 필드와 인스턴스 필드에는 필드를 초기화하는 초기화 프로그램이 있습니다. 11행에서는 보호된 액세스 수정자를 사용하여 인스턴스 메서드를 추가합니다. 이 수정자를 사용하면 이 클래스의 정의 내와 파생 클래스 내에서만 액세스할 수 있습니다. 이 액세스 수정자를 사용하는 이유는 무엇입니까? 이 메소드는 클래스의 외부 사용을 위한 것이 아니기 때문입니다. 즉, 사용자에게 노출될 필요가 없습니다. 그러나 상속된 클래스는 이를 사용해야 하므로 이 액세스 권한 키워드를 사용하면 어느 정도의 공개, 즉 상속된 클래스에만 공개되는 직접 공개를 보장할 수 있습니다. 이 방법의 목적은 인스턴스 필드의 값을 구체적으로 설정하는 것입니다. USB 플래시 드라이브의 콘텐츠를 시뮬레이션할 때 인스턴스 필드가 TV의 채널 및 볼륨에 대한 특정 값을 갖도록 합니다. 이 외에도 기본 클래스의

다른 메서드는 변경되지 않았습니다. 코드 37행에서는 파생 클래스라고도 하는 하위 클래스를 정의합니다. 기본 클래스를 상속하는 구문은 클래스 이름 뒤에 콜론을 추가하고 기본 클래스의 클래스 이름을 따르는 것입니다. 코드의 38행에서는 기본 클래스의 Set 메서드가 호출되고 두 개의 매개 변수가 기본 클래스 메서드에 전달되는 메서드를 정의합니다. 이 두 매개 변수는 USB 플래시 드라이브의 콘텐츠를 재생할 때 TV를 결정합니다. 채널은 0이고 볼륨은 30입니다. Set 메서드를 호출할 때 this 키워드가 사용됩니다. 이는 이 메서드가 기본 클래스에서 상속되고 자체 속성과 동일하므로 인스턴스 자체임을 나타냅니다. 그런 다음 기본 클래스의 Show 메서드가 호출되어 채널 및 볼륨 설정을 다시 표시합니다. 따라서 TV형과 NewTV형의 관계는 다음과 같이 설명할 수 있다. TV형은 TV 세트의 프로토타입으로 볼 수 있고, NewTV형은 이 프로토타입을 기반으로 한 업그레이드된 TV 세트로 볼 수 있다. USB 디스크 재생 기능을 추가하고, 다른 기능은 다시 디자인할 필요 없이 프로토타입에서 직접 상속할 수 있습니다. 코드의 46행은 하위 클래스의 인스턴스를 정의한 다음 47, 48, 49행에서 기본 클래스에 정의된 인스턴스 메서드를 직접 호출합니다. 이러한 메서드는 상속되었으며 전적으로 하위 클래스 자체에 속하기 때문입니다. 50행에서는 하위 클래스에 의해 정의된 새로 추가된 자체 메서드를 호출합니다. 이 코드

의 실행 결과는 다음과 같습니다.

电视机型号是:39 英寸液晶 
频道:2
音量:21 设置完毕
电视机型号是:39 英寸液晶
频道:0 音量:30
现在开始播放 U 盘的视频文件......

위 내용은 C# 클래스의 상속을 간략하게 소개하는 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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