91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c#多態的詳細解析

發布時間:2020-07-18 13:59:46 來源:億速云 閱讀:133 作者:小豬 欄目:編程語言

這篇文章主要講解了c#多態的詳細解析,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

繼承概念

  多態:即一個接口,多個功能

  同一種操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果

  多態性可以是靜態的或動態的。在靜態多態性中,函數的響應是在編譯時發生的。在動態多態性中,函數的響應是在運行時發生的 

靜態多態性

  在靜態多態性中,函數的響應是在編譯時發生的

  父類中如果有方法需要子類重寫,可以將該方法標記為虛方法

  虛方法必須在父類中有實現,空實現也可以

  虛方法子類可以重寫,也可以不重寫

  實現靜態多態性有兩種方法;

    函數重載

    運算符重載

函數重載

  即在同一范圍中對同一函數名的多重定義

  通過定義函數的傳參的不同類型或數量進行區分

  在調用函數時,根據傳的參數類型和數量判斷調用名字相同的那個方法 

using System;

namespace 函數重載
{
  class printdata
  {
    void print(int i)
    {
      Console.WriteLine("printing int: {0}", i);
    }

    void print(double f)
    {
      Console.WriteLine("printing folat: {0}", f);
    }

    void print(string s)
    {
      Console.WriteLine("printing string: {0}", s);
    }

    static void Main(string[] args)
    {
      printdata p = new printdata();

      // 調用 print 來打印整數
      p.print(34);

      // 調用 print 來打印浮點數
      p.print(234.643);

      // 調用 print 來打印字符串
      p.print("Hello Tynam");

      Console.ReadKey();

    }
  }
}

運行結果

c#多態的詳細解析

運算符重載

  重定義或重載C#中內置的運算符

  通過關鍵字operator加運算符的符號來定義

  與其他函數一樣,重載運算符有返回類型和參數列表

using System;

namespace 運算符重載
{
  class Complex
  {
    public int x;
    public int y;
    public int z;
    public Complex(int x, int y, int z)
    {
      this.x = x;
      this.y = y;
      this.z = z;
    }

    public static Complex operator+(Complex v1,Complex v2)
    {
      return new Complex(v1.x + v2.x,v1.y + v2.y,v1.z + v2.z);
    }

    public static Complex operator /(Complex v1, Complex v2)
    {
      return new Complex(v1.x / v2.x, v1.y / v2.y, v1.z / v2.z);
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      Complex v1 = new Complex(1,20,31);
      Complex v2 = new Complex(5,6,7);
      Complex v3 = v1 + v2;
      Complex v4 = v1 / v2;
      Console.WriteLine("x is {0} ; y is {1} ; z is {2}", v3.x, v3.y, v3.z);
      Console.WriteLine("x is {0} ; y is {1} ; z is {2}", v4.x, v4.y, v4.z);
      Console.ReadKey();
    }
  }
}

運行結果

c#多態的詳細解析

可重載和不可重載運算符

  可以被重載的一元運算符:+、 -、 !、~、++、--

  可以被重載的二元運算符:+、 -、 *、 /、 %

  可以被重載的比較運算符:==、!=、<、>、<=、>=

  不能被直接重載的條件邏輯運算符:&&、||

  不能被重載的賦值運算符:+=、-=、*=、/=、 %=

  不能被重載的其他運算符:=、 .、 &#63;:, ->、 new、 is、sizeof、typeof

動態多態性

  在動態多態性中,函數的響應是在運行時發生的

  使用關鍵字abstract創建抽象類,用于提供接口的部分類的實現

  當一個派生類繼承自該抽象類時,實現即完成

  抽象類包含抽象方法,抽象方法可被派生類實現

  抽象方法不允許有方法體的

  當一個子類繼承抽象類時,必須把父類的所有抽象成員都重寫;若子類也是一個抽象類,可以不寫

  子類重寫父類的方法,參數和返回值必須跟父類一樣

  抽象方法不能用static修飾

  抽象類是有構造函數的,雖然不能被實例化

  抽象類標記abstract,不能有任何實現,不能有方法體

using System;

namespace 動態多態性
{
  abstract class Shape
  {
    public abstract int area();
  }

  class Rectangle : Shape
  {
    private int length;
    private int width;

    public Rectangle(int a = 0, int b = 0)
    {
      length = a;
      width = b;
    }

    public override int area()
    {
      return (width * length);
    }
  }

  class RectangleTester
  {
    static void Main(string[] args)
    {
      Rectangle r = new Rectangle(2, 4);
      double a = r.area();
      Console.WriteLine("RectangleArea is: {0}",a);
      Console.ReadKey();
    }
  }

}

運行結果

c#多態的詳細解析

看完上述內容,是不是對c#多態的詳細解析有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正阳县| 响水县| 沙雅县| 纳雍县| 古交市| 巫溪县| 新丰县| 禄丰县| 墨脱县| 岑巩县| 项城市| 萍乡市| 陈巴尔虎旗| 吉隆县| 特克斯县| 永昌县| 平山县| 通海县| 阳春市| 伊春市| 惠水县| 石狮市| 马山县| 察哈| 靖宇县| 望城县| 富源县| 霍邱县| 商丘市| 资阳市| 洛浦县| 新源县| 天气| 报价| 杭锦后旗| 黄山市| 长岭县| 平阴县| 炉霍县| 井冈山市| 图们市|