函式過載是class中函式復用的方式之一,即在乙個class中可以通過函式的引數個數與引數型別的不同定義多個同名函式,函式過載:呼叫時再通過函式的引數加以區分。
【附加:c++運算子過載 】
using system;
namespace day0908._0907
public void func1(double a)
//public int func1(int a) //error!
public void func1()
/*如果是引數型別不同的函式過載,可以使用函式的泛型再次簡化***/
/*例項:交換兩個變數(型別未知)*/
public void swap(ref t a,ref t b)
static void main0()
\n",a,d);}}
}
當class中函式只是引數型別不同,可採用"泛型函式"實現**復用(見上述示例);運算子過載(實現"字串*整數=整數個字串")
python中:data = "a"*30c#中模擬:string data = new str("a")*30;運算子過載注意事項:
/*使用者定義的運算子「str.operator *(str, int)」必須宣告為 static 和 public*/
例項:
class str
public str(string data)
/*二元運算子的引數之一必須是包含型別*/
/*使用者定義的運算子「str.operator *(str, int)」必須宣告為 static 和 public*/
public static string operator* (str a,int b)
return temp.tostring();}}
多型:"使用父類宣告子類" 即檢視子類是否有許可權替換自己
overload(過載) 只是乙個名詞,表示同乙個class中同名函式之間的關係;多型:派生類的例項可以直接賦予個基類變數(可以使用基類型別將所有派生的子類例項構建陣列【此時基類被重寫】)測試用例:override(重寫且覆蓋) :是乙個修飾符,也是多型的一種表示形式(用於重寫基類中的同名虛函式);
new(重寫不覆蓋):與override不同的是,使用基類初始化派生類時,得到的例項呼叫的仍是基類的同名函式;
虛基類(虛函式):內部變數可以初始化,還可以定義虛函式的實現(可以包含字段【只宣告未賦值的變數】);
抽象類(抽象函式):內部變數可以初始化,單數無法定義抽象函式的實現(可以包含字段);
介面:(支援多繼承!)
1.介面在派生類中的實現必須新增public!2. 不再使用class,直接使用inte***ce name{}定義,介面一切都是公開的;(內部成員不用使用許可權修飾符)3. 抽象類和介面因為沒了方法的實現,所以強制要求派生部分實現抽象基類/介面中的所有未宣告部分;4. *不再允許包含字段,但可以使用get,set處理變數;抽象類例項:
using system;
using system.collections;
namespace day0908._0908
public abstract void shop();
}public class shoemarket : market
}public class clothesmarket : market
}class run0
;ms[0].goods = "xx";
ms[0].shop();}}
}
介面示例:
using system;
namespace day0908._0908
void func1();
}inte***ce demo4 : demo3
class demo5 : demo4
}public void func2()
public void func1()
public void own()
}class run}}
C C 類的繼承 多型與虛函式 過載
物件導向的程式設計主要目的是提供可重複利用的 類的繼承也是 重用的一種方式。從已有的類 基類 派生出新的類,派生類 繼承了原有類的特性,同時在其基礎上進行擴充套件增加功能。1.繼承 派生類可以訪問基類的公有成員 派生類不能直接訪問基類的私有成員,必須通過基類的公有函式間接訪問私有成員 派生類的建構函...
C 多型 過載 函式隱藏
1.多型 派生類對基類的virtual方法進行覆蓋。注意 此時的函式原型與基類保持一致,即同名同引數型別。特徵是 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual關鍵字。5 動態編譯。基類 子類 執行 結果 結論 只有virtual 即多型 才會...
c 函式過載 多型特性
在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的個數 型別或者順序 必須不同。不能僅通過返回型別的不同來過載函式。當您呼叫乙個過載函式或過載運算子時,編譯器通過把您所使用的引數型別與定義中的引數型別進行比較,決定選用最合適的定義。選擇最合適的過載函式或過載運算子...