青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 13, 文章 - 0, 評論 - 3, 引用 - 0
數據加載中……

C#中的繼承與覆蓋

C#中繼承與函數覆蓋,有時比較復雜,不小心很容易弄錯。所以有必要總結點規律出來。
(1) 當子類中擁有和父類一樣的可見field和member function時,子類中的field和member function會覆蓋父類中的定義。
using System;

namespace
 TestInheritance

    
public class
 Bird 
    
{
        
public string type = "Bird"
;

        
        
public void
 ShowType()
        
{
            Console.WriteLine(
"Type is {0}"
, type);
        }

   
 }

    
public class Chicken : Bird
    
{
        
//同名的field,可見性為public或者protected,不管有沒有聲明為new,均會覆蓋父類中的field

       public new string type = "Chicken";
      
 
        
//當子類含有和父類相同的函數簽名(可見性public或者protected、函數名和參數都相同)時,不管帶new與否,都將覆蓋父類中相同的函數

        public /*new*/ void ShowType()
        
{ Console.WriteLine();                     
            Console.WriteLine(
"This is Chicken::ShowType()"
, type);
        }
     
  
 }


    
public class TestInheritance
    
{     

        
public static void
 Main()
        
{
            Bird bird 
= new
 Chicken();
            bird.ShowType();
           
Console.WriteLine();   
            Chicken chicken = new
 Chicken();
            chicken.ShowType();
            Console.WriteLine();
            Console.WriteLine(
"Type is {0}"
, chicken.type);
            Console.Read();

        }

    }

}
如上例中的輸出會是:
Type is Bird

This is Chicken::ShowType()

Type is Chicken

(2) 當子類中的member function 和field作用范圍比父類中對應的member function和field小時,只會對作用范圍內的部分產生覆蓋影響,對作用范圍外無影響。
如下例:
using System;

namespace TestInheritance

    
public class Bird 
    
{
        
public string type = "Bird";

        
        
public void ShowType()
        
{
            Console.WriteLine(
"Type is {0}", type);
        }

       
    }

    
public class Chicken : Bird
    
{
        
//這里的type只會對Chicken內部的函數有影響,出了Chicken類,該函數不具有作用。
        private new string type = "Chicken";

        
//這里的ShowType()函數只會對Chicken內部的函數有影響,出了Chicken類,該函數不具有作用。
        private /*new*/ void ShowType()
        
{
            Console.WriteLine(
"This is Chicken::ShowType()", type);
        }

     
        
public void ShowInfo()
        
{
            ShowType();           
        }

    }


    
public class TestInheritance
    
{     

        
public static void Main()
        
{
            Bird bird 
= new Chicken();
            bird.ShowType();
            Console.WriteLine();

            Chicken chicken = new Chicken();
            chicken.ShowType();
            Console.WriteLine();
            Console.WriteLine(
"Type is {0}", chicken.type);
            Console.WriteLine();
            chicken.ShowInfo();
            Console.Read();

        }

    }

}
輸出:
Type is Bird

This is Bird

Type is Bird

This is Chicken::ShowType()

又如下例:
using System;

namespace TestInheritance

    
public class Bird 
    
{
        
public string type = "Bird";

        
        
public void ShowType()
        
{
            Console.WriteLine(
"Type is {0}", type);
        }

       
    }

    
public class Chicken : Bird
    
{
        
//這里的type只會對Chicken內部的函數有影響,出了Chicken類,該函數不具有作用。
        protected new string type = "Chicken";

        
//這里的ShowType()函數只會對Chicken內部的函數有影響,出了Chicken類,該函數不具有作用。
        protected /*new*/ void ShowType()
        
{
            Console.WriteLine(
"This is Chicken::ShowType()", type);
        }

     
        
public void ShowInfo()
        
{
            ShowType();           
        }

    }


   
    
public class Cock : Chicken
    
{
        
public void ShowInfo()
        
{
            Console.WriteLine(
"Cock::ShowInfo()");
            
//這里會調用Chicken的type成員
            Console.WriteLine(type);
            
//這里將調用Chicken的ShowType()函數
            ShowType();
        }

    }


    
public class TestInheritance
    
{     

        
public static void Main()
        
{
            Bird bird 
= new Chicken();
            
//調用Bird的ShowType()函數
            bird.ShowType();
            
            Console.WriteLine();
            Chicken chicken 
= new Chicken();

            
//這里會調用Bird的ShowType();
            chicken.ShowType();
            
//這里chicken.type會為Bird,因為Chicken類中type為protected,在這里沒法訪問
            Console.WriteLine("Type is {0}", chicken.type);
            chicken.ShowInfo();      
     
            Console.WriteLine();
            Cock cock 
= new Cock();
            cock.ShowInfo();
            Console.Read();
        }

    }

}
會輸出:
Type is Bird

Type is Bird
Type is Bird
This is Chicken::ShowType()

Cock::ShowInfo()
Chicken
This is Chicken::ShowType()

(3) 當子類中的member function 和父類的member function名字相同但參數不同時,不會產生覆蓋。如:
using System;

namespace TestInheritance

    
public class Bird 
    
{
        
public string type = "Bird";

        
        
public void ShowType()
        
{
            Console.WriteLine(
"Type is {0}", type);
        }

       
    }

    
public class Chicken : Bird
    
{
        
//這里的type只會對Chicken內部的函數有影響,出了Chicken類,該函數不具有作用。
        protected new string type = "Chicken";

        
//不會覆蓋Bird的ShowType函數,因為函數簽名不同(參數不同)
        public /*new*/ void ShowType(int x)
        
{
            Console.WriteLine(
"int {0}",x);
            Console.WriteLine(
"This is Chicken::ShowType()", type);
        }

     
        
public void ShowInfo()
        
{
            
//會調用Bird的ShowType函數
            Console.WriteLine();
            Console.WriteLine(
"Chicken::ShowInfo()");
            ShowType();           
        }

    }


   
    
public class Cock : Chicken
    
{
        
public void ShowInfo()
        
{
            Console.WriteLine();
            Console.WriteLine(
"Cock::ShowInfo()");
            
//這里會調用Chicken的type成員
            Console.WriteLine(type);
            
//這里將調用Bird的ShowType()函數
            ShowType();
        }

    }


    
public class TestInheritance
    
{     

        
public static void Main()
        
{
            Bird bird 
= new Chicken();
            
//調用Bird的ShowType()函數
            bird.ShowType();
          
            Chicken chicken 
= new Chicken();

            
//這里會調用Bird的ShowType();
            chicken.ShowType();
            
//這里chicken.type會為Bird,因為Chicken類中type為protected,在這里沒法訪問
            Console.WriteLine("Type is {0}", chicken.type);
            chicken.ShowInfo();           

            Cock cock 
= new Cock();
            cock.ShowInfo();
            Console.Read();
        }

    }

}

輸出為:
Type is Bird
This is Bird
Type is Bird

Chicken::ShowInfo()
Type is Bird

Cock::ShowInfo()
Chicken
Type is Bird。

這里沒有列舉虛函數和override,考慮到篇幅,那個將在其它文章中予以說明,相信通過以上幾個實例,大家可以對函數覆蓋有個比較好的了解。

posted on 2009-04-12 01:02 五味雜陳 閱讀(1797) 評論(0)  編輯 收藏 引用 所屬分類: .NET

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久久久久一区二区| 99视频在线精品国自产拍免费观看| 欧美日韩免费精品| 久久精品日韩一区二区三区| 欧美日韩一本到| 久久一区免费| 国产精品色一区二区三区| 亚洲日本中文| 91久久精品日日躁夜夜躁欧美| 久久成人精品无人区| 欧美日韩调教| 亚洲精品小视频| …久久精品99久久香蕉国产| 欧美一区日本一区韩国一区| 香蕉久久a毛片| 国产精品xnxxcom| 一区二区av在线| 一区二区日韩伦理片| 欧美激情偷拍| 亚洲美女91| 一区二区冒白浆视频| 欧美精品日韩一本| 亚洲精品婷婷| 中文一区在线| 国产精品国产三级国产专播品爱网 | 亚洲高清在线观看| 国产一区日韩一区| 欧美一区二区三区的| 久久九九99| 在线日韩欧美| 男人插女人欧美| 亚洲精品一区二区三区樱花| 一区二区欧美日韩视频| 欧美三日本三级三级在线播放| 久久精品亚洲一区二区三区浴池| 久久久精品欧美丰满| 久久亚洲风情| 亚洲国产精品精华液网站| 嫩草影视亚洲| 亚洲精品乱码| 亚洲欧美日韩视频一区| 国产日产欧美一区| 久久人人精品| 亚洲精品久久久久| 亚洲欧美日韩综合国产aⅴ| 国产精品一区在线观看| 久久国产精品第一页| 亚洲国产日韩在线一区模特| 亚洲视频一区| 国内外成人免费激情在线视频网站| 亚洲三级毛片| 性色av一区二区三区| 国产亚洲精品bt天堂精选| 久久亚洲国产精品一区二区| 91久久精品日日躁夜夜躁欧美| 在线观看日韩精品| 欧美人成在线视频| 亚欧美中日韩视频| 欧美激情欧美狂野欧美精品| 在线一区二区视频| 国产日韩欧美综合| 免费在线亚洲| 亚洲在线视频免费观看| 欧美成人亚洲| 亚洲欧美一区二区视频| 在线成人中文字幕| 国产精品va在线播放我和闺蜜| 亚洲黄色视屏| 欧美在线地址| 一区二区日本视频| 一区二区在线观看视频在线观看| 亚洲欧美国产三级| 欧美高清影院| 久久福利电影| 在线视频日韩精品| 亚洲成人在线网站| 国产精品一级二级三级| 欧美激情视频一区二区三区在线播放 | 一本色道久久综合狠狠躁篇怎么玩 | 亚洲美女中文字幕| 久久精品欧美日韩精品| 一区二区三区久久精品| 原创国产精品91| 国产欧美日韩精品专区| 欧美日韩理论| 欧美电影美腿模特1979在线看| 蜜臀久久久99精品久久久久久 | 狠狠综合久久av一区二区老牛| 一区二区三区国产精品| 男同欧美伦乱| 久久中文精品| 久久激情视频| 性欧美18~19sex高清播放| aa日韩免费精品视频一| 影音先锋中文字幕一区| 国产一区二区按摩在线观看| 国产精品久久久久久久久久久久久 | 蜜桃久久av一区| 亚洲免费一在线| 一区二区三欧美| 日韩午夜三级在线| 日韩午夜在线观看视频| 亚洲精品国产系列| 91久久国产综合久久蜜月精品| 在线视频亚洲| 亚洲小说春色综合另类电影| 一本一本a久久| 一区二区国产精品| 亚洲精品国产精品国自产在线| 欧美日韩一区精品| 欧美日韩免费观看一区二区三区 | 免费视频最近日韩| 欧美xxx在线观看| 久久久久久九九九九| 久久99在线观看| 久久精品在线| 久久青草久久| 久久综合久久久| 免费看的黄色欧美网站| 免费在线看一区| 欧美另类一区| 国产精品久久久| 国产一区在线看| 亚洲第一福利社区| 99国产精品| 亚洲欧美日韩国产综合精品二区| 国产曰批免费观看久久久| 国内在线观看一区二区三区| 永久91嫩草亚洲精品人人| 亚洲丰满在线| 99v久久综合狠狠综合久久| 99天天综合性| 欧美资源在线观看| 老司机午夜免费精品视频| 亚洲电影在线看| 妖精成人www高清在线观看| 欧美一区二区黄色| 欧美寡妇偷汉性猛交| 国产精品美女主播| 一区二区视频免费完整版观看| 欧美四级剧情无删版影片| 国产欧美日韩一区二区三区在线观看| 女同一区二区| 国产精品美女久久久久久久| 国产一级久久| av72成人在线| 久久久久久亚洲精品杨幂换脸 | 国产三级精品在线不卡| 狠狠狠色丁香婷婷综合久久五月 | 香港久久久电影| 欧美成人性生活| 亚洲午夜久久久久久尤物| 久久婷婷蜜乳一本欲蜜臀| 欧美日韩日日骚| 精品动漫3d一区二区三区| 中文国产成人精品久久一| 噜噜噜91成人网| 日韩午夜激情| 美国十次成人| 国产日韩欧美亚洲一区| 99精品视频免费| 久久免费国产精品| 在线综合亚洲| 老司机精品导航| 国产日韩一区二区| 一区二区三区四区蜜桃| 欧美18av| 久久大香伊蕉在人线观看热2| 欧美一区二区三区四区高清| 欧美日韩午夜精品| 亚洲日本aⅴ片在线观看香蕉| 亚洲丁香婷深爱综合| 欧美在线免费观看视频| 亚洲乱码国产乱码精品精可以看| 91久久精品国产91久久| 小黄鸭精品密入口导航| 欧美少妇一区二区| 亚洲人体偷拍| 欧美大片免费久久精品三p| 午夜亚洲视频| 国产精品亚洲综合久久| 中文在线一区| 9久re热视频在线精品| 欧美成人嫩草网站| 亚洲国产精品悠悠久久琪琪 | 亚洲视频精选在线| 亚洲狠狠丁香婷婷综合久久久| 亚洲精品欧美极品| 欧美成人免费视频| 亚洲二区三区四区| 欧美激情视频一区二区三区免费 | 久久不射中文字幕| 国产亚洲福利一区| 久久久精品tv| 久久国产精品久久久| 国产午夜精品视频免费不卡69堂| 在线观看亚洲精品| 久久午夜精品一区二区| 久久激情综合| 尤物yw午夜国产精品视频|