前言:在前面的文章中,我們已經對虛方法和抽象方法有了瞭解,那麼本博文將闡述它們之間的區別,一起來看看吧。
一.在定義上:
虛方法用關鍵字virtual
來進行聲明,不允許再有static,abstract,或override修飾符
訪問修飾符 virtual 函數返回類型 函數名(參數表) {函數體};
抽象方法用關鍵字abstract
來進行聲明,只在抽象類中定義,方法修飾符不能使用private, virtual, static.
訪問修飾符 abstract class abstract_name{}
二.在實現上:
虛方法 | 抽象方法 |
---|---|
虛擬可以直接實例化 | 抽象不可以實例化 |
虛方法可以在任何非密封類中聲明 | 抽象方法只能在抽象類中聲明 |
虛方法可以在派生類中重寫也可以不重寫 | 抽象方法必須在派生類進行重寫 |
虛方法有實現部分 | 抽象方法沒有實現部分 |
虛方法不能是私有的 | 抽象方法是私有的、受保護的 |
三.在作用上:
在面向對象方法中,抽象類主要用來進行類型隱藏。構造出一個固定的一組行爲的抽象描述;
當在基類中進行虛方法的定義以後,在派生類中可以對其方法進行調用,而且可以通過重寫來改變其中實現的功能來實現自己的一些功能;
四.使用場景:
當所有子類都要實現某一功能時,使用虛擬,將這些功能包裝在基類中,在派生類中用關鍵字base
引用;
當功能不相關時,使用抽象類;
若有忽略不足之處希望大家及時提出!😃😦😦😦