C#的多态特性
2015-08-04 11:15
344 查看
多态是面向对象三大特性之一
什么是多态呢?
多态就是让一个对象表现出多种状态(类型);
什么是多种状态?
多种状态就是能够实现多种功能,比如说一个人他专长原子弹,但是他也会吃饭,睡觉等基本技能,而这些基本技能就可以相当于他在实现这些技能时的多种状态,因此多态是需要建立在继承之上的;
那么实现多态有什么好处呢?
1、减少代码冗余;
2、增强了程序的可扩展性;
那么怎么才能够实现多态的呢?
1、虚方法;
2、抽象类;
3、接口;
怎样使用虚方法实现多态?
1、使用关键字Virtual对父类所需要被继承的方法进行修饰,表示这个方法为虚方法,能够被子类重写;
2、子类重写被Virtual修饰的方法,并在重写的方法返回值前加上override;
虚方法常用于父类拥有自己的独特行为或者父类需要被实例化的情况;
那么当父类的行为不明确应该怎么实现多态呢?
这时就需要使用抽象类去实现多态了;
1、抽象类是被abstract关键字修饰的,抽象类既可以有抽象成员也可以有非抽象成员;
2、子类继承了抽象类就必须要重写父类中所有的抽象成员,所以抽象类中的抽象成员访问权限不能为private;
3、抽象方法是不能够被实现的(就是说,抽象方法不能够有方法体);
当一个子类需要同时拥有多个父类中的方法,但是继承具有单根性,那怎么办呢?
此时就需要使用接口去让子类去实现,使用接口去实现多态;
1、接口是被interface关键字修饰的,接口成员的默认修饰符是public;
2、子类实现一个接口就必须实现这个接口中的所有成员(注意不是重写,不需要有override,是单纯的将方法实现);
3、接口中的方法不能够有方法体,方法仅有返回值类型,方法名,参数列表;
4、实现接口中的成员分为普通实现和显式实现,后者用于解决方法的重名问题,显示实现就是在子类中进行如下语法的实现: 返回值类型 接口名.接口方法(){}
, 普通实现就是将接口中的方法写出方法体就行了;
通过以上三种方法就能够基本上实现各种情况的多态~
什么是多态呢?
多态就是让一个对象表现出多种状态(类型);
什么是多种状态?
多种状态就是能够实现多种功能,比如说一个人他专长原子弹,但是他也会吃饭,睡觉等基本技能,而这些基本技能就可以相当于他在实现这些技能时的多种状态,因此多态是需要建立在继承之上的;
那么实现多态有什么好处呢?
1、减少代码冗余;
2、增强了程序的可扩展性;
那么怎么才能够实现多态的呢?
1、虚方法;
2、抽象类;
3、接口;
怎样使用虚方法实现多态?
1、使用关键字Virtual对父类所需要被继承的方法进行修饰,表示这个方法为虚方法,能够被子类重写;
2、子类重写被Virtual修饰的方法,并在重写的方法返回值前加上override;
虚方法常用于父类拥有自己的独特行为或者父类需要被实例化的情况;
那么当父类的行为不明确应该怎么实现多态呢?
这时就需要使用抽象类去实现多态了;
1、抽象类是被abstract关键字修饰的,抽象类既可以有抽象成员也可以有非抽象成员;
2、子类继承了抽象类就必须要重写父类中所有的抽象成员,所以抽象类中的抽象成员访问权限不能为private;
3、抽象方法是不能够被实现的(就是说,抽象方法不能够有方法体);
当一个子类需要同时拥有多个父类中的方法,但是继承具有单根性,那怎么办呢?
此时就需要使用接口去让子类去实现,使用接口去实现多态;
1、接口是被interface关键字修饰的,接口成员的默认修饰符是public;
2、子类实现一个接口就必须实现这个接口中的所有成员(注意不是重写,不需要有override,是单纯的将方法实现);
3、接口中的方法不能够有方法体,方法仅有返回值类型,方法名,参数列表;
4、实现接口中的成员分为普通实现和显式实现,后者用于解决方法的重名问题,显示实现就是在子类中进行如下语法的实现: 返回值类型 接口名.接口方法(){}
, 普通实现就是将接口中的方法写出方法体就行了;
通过以上三种方法就能够基本上实现各种情况的多态~
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#.NET获取拨号连接的宽带连接方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#实现基于链表的内存记事本实例
- C#托管堆对象实例包含内容分析
- C#实现按照指定长度在数字前补0方法小结
- C# 通过 inline-asm 解决嵌入x86汇编
- C#虚方法的声明和使用实例教程
- C#获取文件夹及文件的大小与占用空间的方法