面向对象的原则:
多组合、少继承;低耦合,高内聚
继承多关注于共同性;多态着眼于差异性
多态
通过继承,一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性。C# 中的每种类型都是多态的。类型可用作它们自己的类型或用作 Object 实例,因为任何类型都自动将 Object 当作基类型。
1 public class animal 2 { 3 4 public string SayName() 5 { 6 return "hello im animal"; 7 8 } 9 public string Eat() 10 { 11 12 return "this is animal's eat"; 13 } 14 public virtual string Call() 15 { 16 17 return "this is animal's speak"; 18 } 19 } 20 public class Bird:animal 21 { 22 public new string Eat()// 使用新的派生成员替换基成员 23 { 24 return "this is bird's Eat"; 25 } 26 public override string Call() //重写虚方法 27 { 28 return "this is Bird's Call"; 29 } 30 31 }
1 /*继承基类的 eat 和 call 功能*/ 2 /* 3 * result: 4 hello im animal 5 this is bird's Eat 6 this is Bird's Call 7 */ 8 Bird bb = new Bird(); 9 Response.Write(bb.SayName() + "</br>"); 10 Response.Write(bb.Eat()+"</br>"); 11 Response.Write(bb.Call() + "</br>"); 12 13 /* 14 *result: 15 hello im animal 16 this is animal's eat 17 this is Bird's Call 18 */ 19 animal ab = new Bird(); 20 Response.Write(ab.SayName() + "</br>"); 21 Response.Write(ab.Eat() + "</br>"); 22 Response.Write(ab.Call() + "</br>");
new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。
当派生类重写某个虚拟成员时,即使该派生类的实例被当作基类的实例访问,也会调用该成员。
封装
封装第一原则:将字段定义为private