1. 程式人生 > >C#學習日記22---多重繼承

C#學習日記22---多重繼承

         繼承是面向物件程式設計中最重要的概念之一。繼承允許我們根據一個類來定義另一個類來定義一個類,一個類從另一個類派生出來時,派生類從基類那裡繼承特性

         繼承的思想實現了 屬於(IS-A) 關係。例如,哺乳動物 屬於(IS-A) 動物,狗 屬於(IS-A) 哺乳動物,因此狗 屬於(IS-A) 動物。

基類與派生類:

    C#中派生類從他的直接基類繼承成員,方法、屬性、域、事件、索引指示器但是除開建構函式與解構函式。

 下面寫個例項。 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Anlimal  //定義一個基類
    {
        protected int foot = 4;
        protected double weight = 22.4;
        protected void say(string type, string call)
        {
            Console.WriteLine("類別:{0},叫聲:{1} ",type,call);
        }
    }
 
    //Dog 繼承Anlimal 
    class Dog:Anlimal
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();
            int foot = dog.foot;
            double weight = dog.weight;
            Console.WriteLine("dog foot: {0}\ndog weight:{1}",foot,weight);
            dog.say("狗", "汪汪");
        }
    }
}


結果:

 

多重繼承:

         C# 不支援多重繼承。但是,您可以使用介面來實現多重繼承,上面的例子我們為他新增一個smallanlimal介面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Anlimal  //定義一個基類
    {
        protected int foot = 4;
        protected double weight = 22.4;
        protected void say(string type, string call)
        {
            Console.WriteLine("類別:{0},叫聲:{1} ",type,call);
        }
    }

    public interface smallanlimal  //新增一個介面 介面只宣告方法在子類中實現
    {
        protected void hight(double hight);
       
    }
    //Dog 繼承Anlimal 
    class Dog:Anlimal,smallanlimal
    {
        public void hight(double hight)  //實現介面
        {
            Console.WriteLine("Hight: {0}",hight);
        }
        static void Main(string[] args)
        {
            Dog dog = new Dog();
            int foot = dog.foot;
            double weight = dog.weight;
            dog.hight(23.23);
            Console.WriteLine("dog foot: {0}\ndog weight:{1}",foot,weight);
            dog.say("狗", "汪汪");
        }
    }
}