C#學習日記22---多重繼承
阿新 • • 發佈:2018-12-26
繼承是面向物件程式設計中最重要的概念之一。繼承允許我們根據一個類來定義另一個類來定義一個類,一個類從另一個類派生出來時,派生類從基類那裡繼承特性
繼承的思想實現了 屬於(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("狗", "汪汪"); } } }