1. 程式人生 > >C#之多態

C#之多態

ons ase ring string ++ 實體 con per wan

多態:讓一個類能夠表現多種狀態(類型)。

實現多態的3種手段:虛方法,抽象類,接口

1、先介紹虛方法,父類方法用virtual標記(public virtual void SayHello() {......}),子類方法用override標記(public override void SayHello(){......}),父類中放入子類,當調用父類方法時會自動使用子類方法

舉例說明

using System;

namespace virsual_override
{
    //
    class Program
    {
        static void
Main(string[] args) { //English en1 = new English("Jim"); //English en2 = new English("Lucy"); //Korea kr1 = new Korea("金秀賢"); //Korea kr2 = new Korea("金正恩"); //Persion[] pers = { en1, en2, kr1, kr2 }; Persion[] pers = { new
English("Jim"),new English("Lucy"),new Korea("金秀賢"),new Korea("金正恩")}; for (int i = 0; i < pers.Length; i++) { pers[i].SayHello(); } Console.Read(); } } class Persion { public string Name { get
; set; } public Persion(string name) { this.Name = name; } public virtual void SayHello() { Console.WriteLine("我是人類"); } } class English : Persion { public string Name { get; set; } public English(string name) : base(name) { this.Name = name; } public override void SayHello() { Console.WriteLine("我是{0}", this.Name); } } class Korea : Persion { public string Name { get; set; } public Korea(string name) : base(name) { this.Name = name; } public override void SayHello() { Console.WriteLine("我是{0}", this.Name); } } }

結果顯示:

技術分享圖片

2、抽象類

當父類中的方法不知道怎麽實現的時候,可以考慮把父類寫成抽象類,把方法寫成抽象方法。

using System;

namespace abstract_fangfa
{
    class Program
    {
        static void Main(string[] args)
        {
            //Animal a = new Animal();這樣會報錯,抽象類不循序實體化
            Animal a = new Dog();
            a.Bark();
            Console.Read();
        }
        
    }
    public abstract class Animal
    {
        public abstract void Bark();
    }
    public class Dog:Animal
    {
        public override void Bark()
        {
            Console.WriteLine("Dog wangwang Barking");
        }
    }
    public class cat : Animal
    {
        public override void Bark()
        {
            Console.WriteLine("Dog miaomiao Barking");
        }
    }
}

結果

技術分享圖片

3、接口是一種規範,能力

C#之多態