最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解c#多態(tài)

 更新時(shí)間:2020年06月05日 09:39:36   作者:Tynam Yang  
這篇文章主要介紹了c#多態(tài)的相關(guān)知識(shí),文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

繼承概念

  多態(tài):即一個(gè)接口,多個(gè)功能

  同一種操作作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果

  多態(tài)性可以是靜態(tài)的或動(dòng)態(tài)的。在靜態(tài)多態(tài)性中,函數(shù)的響應(yīng)是在編譯時(shí)發(fā)生的。在動(dòng)態(tài)多態(tài)性中,函數(shù)的響應(yīng)是在運(yùn)行時(shí)發(fā)生的 

靜態(tài)多態(tài)性

  在靜態(tài)多態(tài)性中,函數(shù)的響應(yīng)是在編譯時(shí)發(fā)生的

  父類中如果有方法需要子類重寫(xiě),可以將該方法標(biāo)記為虛方法

  虛方法必須在父類中有實(shí)現(xiàn),空實(shí)現(xiàn)也可以

  虛方法子類可以重寫(xiě),也可以不重寫(xiě)

  實(shí)現(xiàn)靜態(tài)多態(tài)性有兩種方法;

    函數(shù)重載

    運(yùn)算符重載

函數(shù)重載

  即在同一范圍中對(duì)同一函數(shù)名的多重定義

  通過(guò)定義函數(shù)的傳參的不同類型或數(shù)量進(jìn)行區(qū)分

  在調(diào)用函數(shù)時(shí),根據(jù)傳的參數(shù)類型和數(shù)量判斷調(diào)用名字相同的那個(gè)方法 

using System;

namespace 函數(shù)重載
{
  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();

      // 調(diào)用 print 來(lái)打印整數(shù)
      p.print(34);

      // 調(diào)用 print 來(lái)打印浮點(diǎn)數(shù)
      p.print(234.643);

      // 調(diào)用 print 來(lái)打印字符串
      p.print("Hello Tynam");

      Console.ReadKey();

    }
  }
}

運(yùn)行結(jié)果

運(yùn)算符重載

  重定義或重載C#中內(nèi)置的運(yùn)算符

  通過(guò)關(guān)鍵字operator加運(yùn)算符的符號(hào)來(lái)定義

  與其他函數(shù)一樣,重載運(yùn)算符有返回類型和參數(shù)列表

using System;

namespace 運(yùn)算符重載
{
  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();
    }
  }
}

運(yùn)行結(jié)果

可重載和不可重載運(yùn)算符

  可以被重載的一元運(yùn)算符:+、 -、 !、~、++、--

  可以被重載的二元運(yùn)算符:+、 -、 *、 /、 %

  可以被重載的比較運(yùn)算符:==、!=、<、>、<=、>=

  不能被直接重載的條件邏輯運(yùn)算符:&&、||

  不能被重載的賦值運(yùn)算符:+=、-=、*=、/=、 %=

  不能被重載的其他運(yùn)算符:=、 .、 ?:, ->、 new、 is、sizeof、typeof

動(dòng)態(tài)多態(tài)性

  在動(dòng)態(tài)多態(tài)性中,函數(shù)的響應(yīng)是在運(yùn)行時(shí)發(fā)生的

  使用關(guān)鍵字abstract創(chuàng)建抽象類,用于提供接口的部分類的實(shí)現(xiàn)

  當(dāng)一個(gè)派生類繼承自該抽象類時(shí),實(shí)現(xiàn)即完成

  抽象類包含抽象方法,抽象方法可被派生類實(shí)現(xiàn)

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

  當(dāng)一個(gè)子類繼承抽象類時(shí),必須把父類的所有抽象成員都重寫(xiě);若子類也是一個(gè)抽象類,可以不寫(xiě)

  子類重寫(xiě)父類的方法,參數(shù)和返回值必須跟父類一樣

  抽象方法不能用static修飾

  抽象類是有構(gòu)造函數(shù)的,雖然不能被實(shí)例化

  抽象類標(biāo)記abstract,不能有任何實(shí)現(xiàn),不能有方法體

using System;

namespace 動(dòng)態(tài)多態(tài)性
{
  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();
    }
  }

}

運(yùn)行結(jié)果

以上就是深入理解c#多態(tài)的詳細(xì)內(nèi)容,更多關(guān)于C#多態(tài)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#操作XML文件步驟

    C#操作XML文件步驟

    在本篇文章里小編給大家分享了關(guān)于C#操作XML文件步驟教學(xué)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2019-01-01
  • c#中WinForm使用OpencvSharp4實(shí)現(xiàn)簡(jiǎn)易抓邊

    c#中WinForm使用OpencvSharp4實(shí)現(xiàn)簡(jiǎn)易抓邊

    本文主要介紹了c#中WinForm使用OpencvSharp4實(shí)現(xiàn)簡(jiǎn)易抓邊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C#實(shí)現(xiàn)將漢字轉(zhuǎn)化為2位大寫(xiě)的16進(jìn)制Unicode的方法

    C#實(shí)現(xiàn)將漢字轉(zhuǎn)化為2位大寫(xiě)的16進(jìn)制Unicode的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)將漢字轉(zhuǎn)化為2位大寫(xiě)的16進(jìn)制Unicode的方法,分析了轉(zhuǎn)換的技巧并以實(shí)例形式給出了具體的轉(zhuǎn)換方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • c# winform 解決PictureBox 無(wú)法打印全部圖片的問(wèn)題

    c# winform 解決PictureBox 無(wú)法打印全部圖片的問(wèn)題

    這篇文章主要介紹了c# winform 解決PictureBox 無(wú)法打印全部圖片的問(wèn)題,幫助大家更好進(jìn)行c# winform開(kāi)發(fā),感興趣的朋友可以了解下
    2020-12-12
  • C#清除字符串內(nèi)空格的方法

    C#清除字符串內(nèi)空格的方法

    這篇文章主要介紹了C#清除字符串內(nèi)空格的方法,是C#操作字符串非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • C#判斷一個(gè)字符串是否包含另一個(gè)字符串的方法

    C#判斷一個(gè)字符串是否包含另一個(gè)字符串的方法

    這篇文章主要介紹了C#判斷一個(gè)字符串是否包含另一個(gè)字符串的方法,涉及C#中IndexOf方法的使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-04-04
  • c# 模擬線性回歸的示例

    c# 模擬線性回歸的示例

    這篇文章主要介紹了c# 模擬線性回歸的示例,幫助大家利用c#進(jìn)行機(jī)器學(xué)習(xí),感興趣的朋友可以了解下
    2020-10-10
  • c# 基于wpf,開(kāi)發(fā)OFD電子文檔閱讀器

    c# 基于wpf,開(kāi)發(fā)OFD電子文檔閱讀器

    這篇文章主要介紹了c# 如何基于wpf,開(kāi)發(fā)OFD電子文檔閱讀器,幫助大家更好的理解和學(xué)習(xí)使用c#的wpf技術(shù),感興趣的朋友可以了解下
    2021-03-03
  • C#實(shí)現(xiàn)洗牌算法

    C#實(shí)現(xiàn)洗牌算法

    洗牌算法的要求是這樣的:將N個(gè)數(shù)亂序后輸出.由于和撲克牌的洗牌過(guò)程比較相似所以我也就稱為洗牌算法了.很多地方都不自覺(jué)的需要這個(gè)算法的支持.也可以將這個(gè)算法擴(kuò)展為從N個(gè)數(shù)中取出M個(gè)不重復(fù)的數(shù)(0<M<=N).今天我們看下如何用C#來(lái)實(shí)現(xiàn)
    2015-03-03
  • C#使用表達(dá)式樹(shù)實(shí)現(xiàn)對(duì)象復(fù)制的示例代碼

    C#使用表達(dá)式樹(shù)實(shí)現(xiàn)對(duì)象復(fù)制的示例代碼

    這篇文章主要介紹了C#使用表達(dá)式樹(shù)實(shí)現(xiàn)對(duì)象復(fù)制,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01

最新評(píng)論

赤壁市| 西昌市| 墨玉县| 凤山市| 罗江县| 南雄市| 达州市| 葫芦岛市| 舒兰市| 达州市| 清苑县| 靖西县| 濮阳市| 阆中市| 翁牛特旗| 延安市| 新巴尔虎右旗| 托克逊县| 磴口县| 海林市| 泉州市| 靖西县| 镇平县| 益阳市| 青州市| 成武县| 丽水市| 高唐县| 商都县| 平罗县| 西畴县| 年辖:市辖区| 麻江县| 铜梁县| 多伦县| 广州市| 铅山县| 金川县| 大厂| 万载县| 岑溪市|