首页 > 代码库 > .net学习笔记--使用抽象方法实现多态
.net学习笔记--使用抽象方法实现多态
在使用抽象方法实现多态之前,我们必须知道一些知识点:
1.抽象类不能被实例化;
2.抽象类可以包含非抽象成员,它们可以由其子类继承调用。
我们可以先创建一个Person的抽象类,代码如下:
1 abstract class Person 2 { 3 4 public Person() { } 5 6 public Person(string name,int age) 7 { 8 Name = name; 9 Age = age;10 }11 string name;12 13 public string Name14 {15 get { return name; }16 set { name = value; }17 }18 int age;19 20 public int Age21 {22 get { return age; }23 set { age = value; }24 }25 26 public abstract void Show();27 }
Person类中我们定义了个抽象方法Show(),注意抽象方法只能在抽象类中,而且其没有方法体。
接下来写两个继承Person类的两个子类,代码如下:
1 class Student:Person 2 { 3 public override void Show() 4 { 5 Console.WriteLine("我是student类的Show方法:{0},{1}",Name,Age); 6 } 7 } 8 class Teacher : Person 9 {10 11 public override void Show()12 {13 Console.WriteLine("我是teacher类的Show方法:{0},{1}", Name,Age);14 }15 }
当子类继承抽象类时:1.重写方法必须添加关键字override关键字,否则不认为是重写方法
2.override方法的方法签名必须和父类的方法完全一样
3.override方法必须找到可以被重写的父类方法
4.抽象方法子类必须重写
抽象类跟子类都写完了 ,接着就是实现多态了,多态的使用方式一般有三种:
1.声明父类变量,实例化子类对象
2.父类做为参数,传入子类对象
3.父类做为方法的返回值,返回具体的子类对象
实现多态代码如下:
1 static void Main(string[] args) 2 { 3 Student stu = new Student() {Name="aa",Age=18 }; 4 Teacher tea = new Teacher() {Name="bb",Age=19}; 5 // 这里并没有创建Person对象。只是使用它做为类型创建一个数组对象 6 Person[] objs=new Person[2]; 7 objs[0] = stu; 8 objs[1] = tea; 9 10 foreach (Person item in objs)11 {12 item.Show();//多态是指不同的子类对象的响应,多态是行为的多态13 }14 Console.ReadKey();15 }
最后还有一点,抽象类也可以继承抽象类,但是我们知道,继承抽象类的子类必须重写抽象类的抽象方法,当抽象类继承抽象类时,继承的抽象方法必须加上个override。代码如下:
1 abstract class Manager:Person2 {3 //子类如果不想重写父类的方法,也必须添加override关键字,但是同时可以声明为抽象的方法,不去做真正的重写4 public abstract override void Show();5 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。