理解“多態 ”之前,先記住兩條語法:1,一個引用能夠調用哪些成員(變量,函數)取決于這個引用本身的類型。對于這句話我的理解:a),多態的前提必須是兩個對象之間存在繼承關系,只有確保對象之間是繼承關系,才能保證不會出現“人是狗,狗是人”的混亂關系。所謂引用就是指針,如,p.name = "zhangsan"; p就是指向某個對象的指針。如,p和s都是指向某個對象的指針,如果:p=s; 則根據本條語法的理解,p所能夠調用的成員就是p本身有的那些成員。如何理解“能夠調用的成員”呢?“調用”對于變量而言就是賦值,如p.; 這就是賦值;如果調用的是方法,那就是執行一個函數,如,p.study(..);這就表示調用函數。2,一個引用調用的是哪個方法,取決于這個引用所指向的哪個對象。因為在多態中一定存在方法的重寫,引用調用的到底是哪個方法?有時容易混亂,如,p和s都是指向某個對象的指針,p=s; 如,p.study(..);這就表示study(..)函數是s所指向的對象的方法。例:
class Test{
public static void main(string args[])
{ Student s = new student();
Person p = s; //向上轉型upcasting
p.;
p.age=20;
p.introduce();//introduce()指向的是student對象的方法