1.類成員的「縱向擴充套件」(成員越來越多)
2.類成員的「縱向擴充套件」(行為改變,版本增高)
例
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
}class vehicle
}class car : vehicle
}}//小結
//若子類要重寫父類的方法,需要在父類的方法裡面加上『visual』,重寫的方法裡加『override』
3.類成員的隱藏(不常用)
例:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
}class vehicle
}class car : vehicle
}}//小結
//不加'visual'和'override'就是隱藏;基本不用,了解就可以了
4.重寫與隱藏的發生條件:函式成員可見,而且簽名一致
二、多型(polymorphism)
1.基於重寫機制(visual→override)
例:方法重寫
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
}class vehicle
}class car : vehicle
}class racecar:car
}}
2.函式成員的具體行為(版本)由物件決定
3.回顧:c#語言的變數和物件都是有型別的,所以會有「代差」
例:
vehicle racecar = new racecar();
//交通工具包含賽車
//但是不能反過來下來寫
racecar vehicle = new vehicle();
//任何交通工具都是賽車 錯誤
C 多型(重寫與覆蓋)
覆蓋 覆蓋 在子類和父類中,方法名 引數列表和返回值全部相同,構成覆蓋,重寫時子類重寫父類的方法,即子類將父類的方法覆蓋。此時需要使用new關鍵字,隱藏父類的細節 class animal class cat animal 重寫 public class a public class b a sta...
C 的重寫與多型
重寫也就是,繼承的不同方面,即子類對父類的縱向擴充套件。行為改變了,且版本增高了 下面的例子中,同樣有方法run,但引用vehicle和引用car兩種例項的時候,列印出來的語句是不一樣的。也就是說,用不同型別例項呼叫方法的時候,與例項相關聯的版本就會被呼叫 例如 static void main s...
重寫與多型
一.方法重寫規則 1.方法名相同。2.引數列表相同。3.返回值型別相同或者是其子類。4.訪問許可權不能嚴於父類。二.抽象方法 abstract也可用於方法 1.抽象方法沒有方法體。2.抽象方法必須在抽象類裡。3.抽象方法必須在子類中被實現,除非子類是抽象類。三.多型 是具有表現多種形態的能力的特徵。...