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

隨筆 - 13, 文章 - 0, 評(píng)論 - 3, 引用 - 0
數(shù)據(jù)加載中……

C#中的繼承與覆蓋

C#中繼承與函數(shù)覆蓋,有時(shí)比較復(fù)雜,不小心很容易弄錯(cuò)。所以有必要總結(jié)點(diǎn)規(guī)律出來(lái)。
(1) 當(dāng)子類中擁有和父類一樣的可見(jiàn)field和member function時(shí),子類中的field和member function會(huì)覆蓋父類中的定義。
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,可見(jiàn)性為public或者protected,不管有沒(méi)有聲明為new,均會(huì)覆蓋父類中的field

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

        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();

        }

    }

}
如上例中的輸出會(huì)是:
Type is Bird

This is Chicken::ShowType()

Type is Chicken

(2) 當(dāng)子類中的member function 和field作用范圍比父類中對(duì)應(yīng)的member function和field小時(shí),只會(huì)對(duì)作用范圍內(nèi)的部分產(chǎn)生覆蓋影響,對(duì)作用范圍外無(wú)影響。
如下例:
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只會(huì)對(duì)Chicken內(nèi)部的函數(shù)有影響,出了Chicken類,該函數(shù)不具有作用。
        private new string type = "Chicken";

        
//這里的ShowType()函數(shù)只會(huì)對(duì)Chicken內(nèi)部的函數(shù)有影響,出了Chicken類,該函數(shù)不具有作用。
        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只會(huì)對(duì)Chicken內(nèi)部的函數(shù)有影響,出了Chicken類,該函數(shù)不具有作用。
        protected new string type = "Chicken";

        
//這里的ShowType()函數(shù)只會(huì)對(duì)Chicken內(nèi)部的函數(shù)有影響,出了Chicken類,該函數(shù)不具有作用。
        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()");
            
//這里會(huì)調(diào)用Chicken的type成員
            Console.WriteLine(type);
            
//這里將調(diào)用Chicken的ShowType()函數(shù)
            ShowType();
        }

    }


    
public class TestInheritance
    
{     

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

            
//這里會(huì)調(diào)用Bird的ShowType();
            chicken.ShowType();
            
//這里chicken.type會(huì)為Bird,因?yàn)镃hicken類中type為protected,在這里沒(méi)法訪問(wèn)
            Console.WriteLine("Type is {0}", chicken.type);
            chicken.ShowInfo();      
     
            Console.WriteLine();
            Cock cock 
= new Cock();
            cock.ShowInfo();
            Console.Read();
        }

    }

}
會(huì)輸出:
Type is Bird

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

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

(3) 當(dāng)子類中的member function 和父類的member function名字相同但參數(shù)不同時(shí),不會(huì)產(chǎn)生覆蓋。如:
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只會(huì)對(duì)Chicken內(nèi)部的函數(shù)有影響,出了Chicken類,該函數(shù)不具有作用。
        protected new string type = "Chicken";

        
//不會(huì)覆蓋Bird的ShowType函數(shù),因?yàn)楹瘮?shù)簽名不同(參數(shù)不同)
        public /*new*/ void ShowType(int x)
        
{
            Console.WriteLine(
"int {0}",x);
            Console.WriteLine(
"This is Chicken::ShowType()", type);
        }

     
        
public void ShowInfo()
        
{
            
//會(huì)調(diào)用Bird的ShowType函數(shù)
            Console.WriteLine();
            Console.WriteLine(
"Chicken::ShowInfo()");
            ShowType();           
        }

    }


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

    }


    
public class TestInheritance
    
{     

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

            
//這里會(huì)調(diào)用Bird的ShowType();
            chicken.ShowType();
            
//這里chicken.type會(huì)為Bird,因?yàn)镃hicken類中type為protected,在這里沒(méi)法訪問(wèn)
            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。

這里沒(méi)有列舉虛函數(shù)和override,考慮到篇幅,那個(gè)將在其它文章中予以說(shuō)明,相信通過(guò)以上幾個(gè)實(shí)例,大家可以對(duì)函數(shù)覆蓋有個(gè)比較好的了解。

posted on 2009-04-12 01:02 五味雜陳 閱讀(1797) 評(píng)論(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>
            精品动漫3d一区二区三区免费| 欧美精品系列| 亚洲欧洲精品一区二区精品久久久| 亚洲一区二区三区视频播放| 揄拍成人国产精品视频| 亚洲欧美国产精品专区久久| 亚洲国产精品久久久久| 久久香蕉国产线看观看网| 亚洲一级一区| 亚洲美女精品一区| 亚洲国产高清自拍| 狠狠入ady亚洲精品| 国产精品嫩草影院av蜜臀| 欧美激情麻豆| 欧美成人按摩| 欧美国产精品中文字幕| 久久久久国内| 欧美中文在线观看国产| 亚洲欧美日韩一区二区三区在线观看| 日韩网站在线看片你懂的| 亚洲区欧美区| 亚洲国产精品电影在线观看| 国内成人精品视频| 国产一区二区三区四区老人| 国产乱肥老妇国产一区二 | 亚洲福利免费| 欧美成人精品影院| 麻豆av福利av久久av| 久久久久欧美精品| 久久黄色小说| 久久久国产视频91| 久久大逼视频| 久久久久久久一区二区三区| 久久精品国产亚洲一区二区三区| 欧美伊人久久久久久久久影院| 性色一区二区| 欧美一二三视频| 久久国产精品久久w女人spa| 久久久精品一品道一区| 久久久久国产精品一区三寸 | 亚洲精品一区二区三区在线观看 | 一本色道久久88亚洲综合88| 日韩视频一区二区| 一区二区三区产品免费精品久久75| av成人天堂| 亚洲无线一线二线三线区别av| 亚洲一区二区三区四区五区午夜| 亚洲欧美日韩电影| 久久成人资源| 欧美高清视频一区二区| 亚洲国产精品成人va在线观看| 亚洲人成网站777色婷婷| 亚洲免费av网站| 亚洲欧美成人综合| 久久精品国产亚洲高清剧情介绍| 久久人人超碰| 欧美日本中文| 国产美女一区二区| 狠狠综合久久av一区二区小说| 亚洲国产精品久久人人爱蜜臀 | 亚洲电影在线看| 99re热精品| 久久er99精品| 欧美国产亚洲视频| 午夜免费在线观看精品视频| 久久久成人精品| 91久久精品日日躁夜夜躁国产| 一本一本久久| 久久久久久久欧美精品| 欧美日韩mp4| 亚欧成人在线| 欧美成人小视频| 国产日韩综合| 亚洲美女视频在线观看| 欧美伊人久久| 亚洲精品一线二线三线无人区| 亚洲欧美激情四射在线日| 蜜桃久久精品一区二区| 国产精品都在这里| 亚洲第一网站| 亚洲欧美日韩天堂| 亚洲日本久久| 久久久91精品国产| 亚洲欧洲日本国产| 欧美一区亚洲一区| 欧美日韩国产精品一区| 精品999日本| 午夜在线播放视频欧美| 亚洲国产视频一区二区| 性久久久久久久久久久久| 欧美精品福利视频| 一区二区三区无毛| 性8sex亚洲区入口| 在线亚洲一区| 欧美国产精品| 久久精品免费看| 国产精品亚洲视频| 99精品视频免费全部在线| 久久综合免费视频影院| 亚洲男人的天堂在线| 欧美劲爆第一页| 亚洲福利视频网站| 久久久久.com| 亚洲欧美国产日韩天堂区| 欧美美女操人视频| 亚洲激情午夜| 牛牛精品成人免费视频| 欧美亚洲色图校园春色| 国产精品久久中文| 亚洲在线免费| 日韩午夜激情| 欧美日韩国产大片| 亚洲精品看片| 亚洲国产高清自拍| 美女精品自拍一二三四| 狠狠色狠狠色综合日日五| 欧美一区亚洲二区| 亚洲欧美日韩一区二区| 国产精品美女视频网站| 99精品国产热久久91蜜凸| 亚洲成色777777在线观看影院| 久久久久国产精品一区| 狠狠色狠狠色综合日日五| 久久性色av| 久久精品国产999大香线蕉| 国产一区二区三区在线观看网站 | 日韩视频免费大全中文字幕| 欧美大片在线观看一区| 亚洲欧洲日本在线| 亚洲国产一区二区在线| 欧美黑人多人双交| 亚洲理论在线观看| 亚洲精品国精品久久99热| 欧美精品一区二区精品网| 亚洲精品美女免费| 亚洲精品日产精品乱码不卡| 欧美激情视频一区二区三区在线播放 | 欧美成年视频| 免费欧美在线视频| 亚洲精品社区| 亚洲美女在线一区| 国产精品久久久久久久久久ktv| 亚洲一区二区三| 亚洲欧美久久久| 久久精品国产一区二区三区免费看| 国产一区亚洲| 欧美成人福利视频| 欧美精品色网| 亚洲一区尤物| 香蕉久久精品日日躁夜夜躁| 久久国产精品72免费观看| 激情欧美一区| 亚洲国产婷婷综合在线精品| 欧美日韩精品欧美日韩精品| 亚洲欧美日韩精品一区二区 | 欧美成人亚洲成人| 一区二区三区日韩精品| 亚洲午夜久久久久久久久电影院| 国产区在线观看成人精品| 久久夜色精品国产噜噜av| 久久伊人亚洲| 亚洲视频二区| 久久大逼视频| 夜夜嗨一区二区三区| 亚洲综合999| 亚洲黄色成人| 亚洲视频免费看| 亚洲大片一区二区三区| 亚洲精品自在久久| 国产日韩欧美一二三区| 牛夜精品久久久久久久99黑人| 欧美不卡激情三级在线观看| 亚洲一区二区在线免费观看视频| 欧美专区一区二区三区| 日韩一二在线观看| 欧美一级片一区| 9i看片成人免费高清| 欧美一区二区在线看| a91a精品视频在线观看| 久久国产精品久久久久久| 一本色道久久综合亚洲精品不| 性伦欧美刺激片在线观看| 亚洲久色影视| 欧美一区综合| 亚洲永久免费| 欧美成人一区在线| 欧美伊人久久| 欧美网站大全在线观看| 欧美jizz19性欧美| 国产欧美日韩伦理| 亚洲三级视频| 亚洲国产精品女人久久久| 亚洲与欧洲av电影| 一二三四社区欧美黄| 久久精品国产视频| 欧美综合国产| 国产精品劲爆视频| 亚洲人在线视频| 亚洲国产第一| 久久久www成人免费无遮挡大片 |