c#重寫,覆蓋,隱藏,重載,繼承

1.重寫和覆蓋:在c#中這兩個是一個意思,重寫就是覆蓋,覆蓋就是重寫(在c++中是兩個不同的概念)

2.隱藏:隱藏就是子類與父類的方法一樣(子類函數名前加一個new),並且子類不是虛方法,那麼子類就會隱藏父類方法

3.重載:方法名相同,參數列表不同

4.繼承:c#中不允許多繼承(接口可以)

下面看具體事例

1.重寫(父類用virtual修飾(虛函數),子類用override修飾)
class Animal
    {
        
        public virtual void Voice()
        {
            Console.WriteLine ("Animal");
        }
    }
class House:Animal
    {
        public override void Voice()
        {
            Console.WriteLine ("House");
        }
    }
2.隱藏
子類可以隱藏父類的方法,不過在c#中會發出警告,添加一個new就ok了
使用new修飾,可以隱藏同名函數。

class ClassA//沒有指定繼承,則默認繼承object
    {
        
        public void Method()
        {
            Console.WriteLine ("classA Method");
        }
    }
    class ClassB:ClassA
    {
       
        public new void Method()
        {
            Console.WriteLine ("classB Method");
        }
    }

3.重載(和c++一致)
參數列表不同包括:
1.參數個數相同,參數類型不同
2.參數類型相同,參數個數不同
原函數:

public void print(int x,int y){
   Console.WriteLine (x+y);
}

重載的函數
public void print(string s,string s2){
    Console.WriteLine (s+s2);
}


public void print(int x,int y,int z){
     Console.WriteLine (x+y+z);
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章