继承、多态的理解 - C#

11月3日 阴天

 前两天看某位大牛写的程序,对于C#多态有困惑,今天一大早来查阅了不少资料,自认为有了一个基本的认知,记录下来,一扫今天这阴霾的天气

----------------------------------------------------------------- 我是华丽的分割线 ------------------------------------------------------

1、类的创建:

  • 首先用abstract创建抽象父类,在父类钟添加virtual虚方法
  • 创建子类继承父类,子类中用override重写父类钟的方法
  • 声明一个父类,实例化的时候分别用子类实例化,实现多态
  • 实现多态就是在父类的基础上声明多个子类,多个子类对父类分别有不同的方法来实现

2、上代码:

 1     //子类3
 2     public class Japanese : Person
 3     {
 4         public override string CallName(string name)
 5         {
 6             return "我是日本人,我的名字叫:" + name;
 7  } 8  } 9 //子类2 10 public class Korea : Person 11  { 12 public override string CallName(string name) 13  { 14 return "我是朝鲜人,我的名字叫:" + name; 15  } 16  } 17 //子类1 18 public class Chinese : Person 19  { 20 public override string CallName(string name) 21  { 22 return "我是中国人,我的名字叫:" + name; 23  } 24  } 25 //父类 26 public abstract class Person 27  { 28 public virtual string CallName(string str) { return str; } 29  }
1 private void button1_Click(object sender, EventArgs e)
2 {
3     Person[] person = {new Chinese(),new Korea(),new Japanese()};
4     foreach (Person p in person)
5     {
6         MessageBox.Show(p.CallName("张三")); 7  } 8 }

 3、继承与多态的理解:

  • 一个类用abstract关键字修饰那这个类就是抽象类
  • 抽象类不能被实例化
  • 抽象方法不能有方法体,连{ }都不能有
  • 抽象方法只能存在于抽象类中,但是抽象类中可以有非抽象方法
  • 抽象类不能是静态类、密封类
  • 抽象类中的所有方法必须被子类重写,除非子类也是抽象类
  • 抽象方法存在的目的:为了约束类中方法存在的形式(参数列表、return类型)
  • base关键字可以用来访问当前对象的基类对象

     (PS:第3条的总结参考了网名“刘二雄”的博文,在此表示感谢~)

 -------------------------------------------------------------------------------------------------------------------------------------

猜你喜欢

转载自www.cnblogs.com/goldendragon/p/9900602.html
今日推荐