首页 / C# / c#面向对象程序设计——多态
c#面向对象程序设计——多态
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#面向对象程序设计——多态,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2318字,纯文字阅读大概需要4分钟。
内容图文
6.1多态概述:
多态:即指多个不同的类对同一个方法的不同实现。多态允许子类对从父类继承的方法进行重新实现
多态的使用在c#中,子类使用new关键字来隐藏父类成员,通过方法的隐藏和方法的重写实现多态。
**第一种方法的隐藏:**实际调用父类方法
//定义人类,包含工作方法
class Person{
public void Work(){
Console.WriteLinw("人在工作");
}
}
//定义医生类和程序员类
class Docter:Person{
public new void Work(){
Console.WriteLinw("医生的工作是看病");
}
}
class Programmer:Person{
public new void Work(){
Console.WriteLinw("程序员的工作是开发软件");
}
}
//创建人、医生、程序员的对象
static void Main(string[] args){
Person person=new Person();
Doctor doctor=new Doctor();
Programmer pgm=new Programmer();
person.Work();
doctor.Work();
pgm.Work();
}
注意: 在子类中定义和父类同名的方法,不使用new关键字,子类中的方法也可以隐藏父类中的同名方法,但编译器将发出警告。
第二种方法重写::1 调用子类的方法
方法重写的代码示例:(注意代码中的注释)
//父类方法定义为虚方法(使用virtual关键字)
class Person{
public virtual void Work(){
Console.WriteLinw("人在工作");
}
}
//子类重写方法(使用override关键字)
class Doctor:Person{
public override void Work(){
Console.WriteLinw("医生的工作是看病");
}
}
//创建子类对象,并调用工作方法
static void Main(string[] agrs){
Person person=new Person();
person.Work();//调用Doctor类的Work()方法
}
注意:重写方法时,子类和父类方法的返回值类型、方法名和参数必须完全相同,子类方法的可访问性不能低于父类方法。父类中希望子类继承的方法使用virtual关键字修饰为虚方法。如果父类方法没有使用virtual关键字,那么子类只能隐藏方法而不能重写。
6.3密封类:
1、密封类使用sealed修饰,不能用作父类。因此,密封类主要用于防止派生子类(派生子类:就是儿子与父亲的关系:class A{};class a{};A是父亲、a是儿子体现在定义类时a:A可以这盲么说:A派生了a,a继承了A)。
2、密封类可以用来限制类的扩展性,当在程序中密封了某个类时,其他类不能从该密封类继承。
语法:
sealed class 类名{}
注意:由于密封类不能被继承,所以类中的方法不能定义为虚方法。
class Role{
public virtual void Attack(){
Console.WriteLinw("角色普通攻击");
}
}
class Warrior:Role{
public sealed override void Attack(){
//当此方法加了sealed后Knight中的Attack()方法就会报错,因为sealed防止了Attack()方法的再次重写。
Console.WriteLinw("战士普通攻击");
}
}
class Knight:Role{
public override void Attack(){
Console.WriteLinw("骑士普通攻击");
}
}
注意:sealed修饰方法时只能与override一起使用,防止重写的方法再次被重写
内容总结
以上是互联网集市为您收集整理的c#面向对象程序设计——多态全部内容,希望文章能够帮你解决c#面向对象程序设计——多态所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。