当前位置: 代码迷 >> C# >> 面向对象的基础知识-打包、继承、多态
  详细解决方案

面向对象的基础知识-打包、继承、多态

热度:81   发布时间:2016-05-05 04:38:57.0
面向对象的基础知识-封装、继承、多态

面向对象的原则:

多组合、少继承;低耦合,高内聚

继承多关注于共同性;多态着眼于差异性

多态

通过继承,一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性。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:animal21     {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. 多态分为接口多态和继承多态
  2. 若要更改基类的数据和行为,您有两种选择:可以使用新的派生成员替换基成员,或者可以重写虚拟的基成员。
 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 animal16             this is animal's eat17             this is Bird's Call18              */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

  相关解决方案