多型性(虛方法)
1、在父類的方法中加入virtual,這個方法可以被子類重新寫一遍。
在子類的方法前加入override
多型就是指不同的物件收到相同的訊息,會產生不同的行為,同乙個類在不同的場合下表現出不同的行為特徵;
多型的作用:把不同的子類都看作是父類,可以遮蔽到不同子類物件之間的差異,寫出通用的**,做出通用的程式設計,以適應需求的不斷變化。
總結:
a、父類中如果有方法需要子類重寫,可以將該方法標記為虛方法;
b、虛方法必須在父類中有實現,空實現也可以(與抽象類區別);
c、虛方法子類可以重寫,也可以不重寫(與抽象類不同 )。
static void main(string args)
public class teacher
get}
public teacher(string name)
public virtual void sayname()
",this.name);}}
public class student : teacher // 繼承父類
public override void sayname() // overrider父類
",this.name);}}
}
抽象類
當父類的方法不知道如何實現時,可以考慮將父類寫成抽象類,將父類方法寫成抽象類方法
抽象方法不允許有方法體的,比如 public abstract void add ( );
總結:1、抽象成員必須在抽象類中,抽象類中可以包括非抽象成員;
2、抽象類不能被例項化;
3、抽象類標記abstract,不能有任何實現,不能有方法體;
4、當乙個子類繼承抽象類時,必須把父類的所有抽象成員都重寫;若子類也是乙個抽象類,可以不寫 ;
5、抽象類中可以包含例項成員;並且例項成員可以不被子類實現。雖然抽象類不可以被例項化,但是它的例項成員可以被繼承;
6、抽象類是有建構函式的,雖然不能被例項化;
7、子類重寫父類的方法,引數和返回值必須跟父類一樣;
8、如果父類中有預設的實現,並且父類需要被例項化,所以將父類定義成乙個普通類,用虛方法來實現多型;若父類中沒有預設的實現,且父類不需要例項化,可以使用抽象類;
9、抽象類的作用就是讓子類繼承;
10、抽象方法不能用static修飾。
static void main(string args)
public abstract class teacher1
public class student1 : teacher1
}
虛方法,抽象類,多型性
code 1.虛方法必須有實現部分,抽象方法沒有提供實現部分,抽象方法是一種強制派生類覆蓋的方法,否則派生類將不能被例項化。如 抽象方法 public abstract class animal 虛方法 public class animal public virtual void eat 2 抽象...
多型性 虛函式 抽象類
一 多型性 指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。c 支援兩種多型性 編譯時多型性,執行時多型性。1.編譯時多型性 通過過載函式實現 2.執行時多型性 通過虛函式實現。二 虛函式 虛函式是在基類中被宣告為virtual,並在派生類中重新定義的成員函式。可實現成員函式的動態...
多型性(純虛函式與抽象類)
將乙個虛函式初始化為0之後,該函式就變成了純虛函式。如 viurtual double area 0 這個虛函式是無任何的功能,不能直接來呼叫,因為它是抽象的,只有被子類繼承並賦予功能後才可呼叫。乙個類可以有多個純虛函式,但是只要有乙個純虛函式給類就是抽象類。抽象類只是乙個概念,就如同人類一樣,沒有...