一. 封裝 // encapsulation
二.繼承 // inheritance
直接看代碼自己調試,繼承中 一次只允許繼承一個類
下面代碼都是在一個命名空間(namespace)裏的
class Program
{
static void Main(string[] args)
{
#region 繼承 inheritance //C#中類是不能多重繼承的
//父(基類) Animals //子 Dog 和 Cat //孫:LittleDog
//C#中類是不能多重繼承的即C#中一次只允許繼承一個類,不能同時繼承多個類。
Dog dog = new Dog();
dog.Age = 12; //繼承 子類中可繼承基類的方法
dog.Bite(); //繼承,父類中方法關鍵字有virtual,子類中可用override重寫Bite方法
dog.GetAge(); //繼承,子類可以獲取基類中方法
dog.NoVirtual(); //繼承 子class可以繼承基類的方法
dog.BitMan(); //,如果 父類中無關鍵字virtual,則子類中不能用override
//new 的意思相當於在子類中隱藏,
Console.ReadLine();
LittleDog littledog = new LittleDog(); //C#中類是不能多重繼承的
littledog.Age = 22; //繼承 子類中可繼承基類的方法
Console.WriteLine("littledog.GetAge");
littledog.GetAge();
Console.ReadLine();
Console.WriteLine("dog.GetAge");
dog.GetAge(); //繼承,子類可以獲取基類中方法
Console.ReadLine();
Cat cat = new Cat();
cat.Age = 33; //繼承 子類中可繼承基類的方法
Console.WriteLine("cat.GetAge");
cat.GetAge(); //繼承,子類可以獲取基類中方法
cat.Bite(); //繼承,父類中方法關鍵字有virtual,子類中可用override重寫Bite方法
Console.ReadLine();
#endregion
}
}
class Animals
{
public int Age { get; set; }
public virtual void Bite()
{
Console.WriteLine("Animal bite");
}
public virtual void GetAge()
{
Console.WriteLine(Age);
}
public void NoVirtual()
{
Console.WriteLine("No virtual");
}
public void BitMan()
{
Console.WriteLine("Animal bite man");
}
}
//sealed class Dog : Animals //會報錯,提示錯誤“Struct.Program.LittleDog”: 無法從密封類型“Struct.Program.Dog”派生 D:\Projects\C#\Struct\Struct\Program.cs 316 15 Struct
class Dog : Animals
{
public override void Bite() //重寫
{
Console.WriteLine("Dog Bite");
}
public new void BitMan() //如果不用new 則會有警告 warning :“Struct.Program.Dog.BitMan()”隱藏了繼承的成員“Struct.Program.Animals.BitMan()”。如果是有意隱藏,請使用關鍵字 new。
{
Console.WriteLine("dog bite man");
}
}
class Cat : Animals
{
public override void Bite() //重寫
{
Console.WriteLine("Cat Bite");
}
}
class LittleDog : Dog
{
public override void Bite() //重寫
{
Console.WriteLine("ddd Bite");
}
}
運行結果:
引用:https://www.cnblogs.com/yanyao/p/4830768.html
三.多態