首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 繼承進階:base 呼叫基底建構子、virtual/override 方法覆寫、虛擬方法完整實作

     編輯:關於C語言

選擇基底類別建構子

基底類別有多個建構子時,衍生類可用 base 指定呼叫哪一個(Java 用 super):


public class Point
{
    private int x, y;
    public Point() { x = 0; y = 0; }
    public Point(int x, int y) { this.x = x; this.y = y; }
}

public class ColorPoint : Point
{
    private Color color;
    public ColorPoint(int x, int y) : base(x, y) { color = Color.Red; }
}

方法覆寫:virtual / override

關鍵差異:Java 方法預設 virtual,C# 必須明確標記 virtual 才能被覆寫。

  • 基底類別:virtual 修飾符
  • 衍生類別:override 修飾符
  • 存取層級必須相同
  • 不可覆寫非 virtual、static 方法

完整範例:StepUp 虛擬方法


using System;

public class CountClass
{
    public int count;
    public CountClass(int startValue) => count = startValue;

    public virtual int StepUp() => ++count;
}

class Count100Class : CountClass
{
    public Count100Class(int x) : base(x) { }

    public override int StepUp() => base.count + 100;

    public static void Main()
    {
        CountClass counter = new CountClass(10);
        CountClass bigCounter = new Count100Class(10);
        Console.WriteLine("Value of count in base class = {0}", counter.StepUp());
        Console.WriteLine("Value of count in derived class = {0}", bigCounter.StepUp());
    }
}

輸出:


Value of count in base class = 11
Value of count in derived class = 110
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved