4.1.2 类的多态
来源:互联网 发布:淘宝新店卖啥好 编辑:程序博客网 时间:2024/06/16 14:39
4.1.2 类的多态
多态是面向对象编程的基本特征之一,它使得派生类的实例可以直接赋予基类的对象,然后直接就可以通过这个对象调用派生类的方法。
c#中,类的多态是通过在派生类中重写基类的虚方法来实现的。
1. 虚方法的重写
在类的方法前面加上关键字virtual,则称该方法为虚方法,通过对虚方法的重写,可以实现在程序运行过程中确定调用的方法。
重写就是在派生类中将基类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的存储权限,或者修改成员方法的返回值类型。
2. 抽象类与抽象方法
如果一个类不与具体的事物相联系,只是表达一种抽象的概念或行为,仅仅作为其派生类的一个基类,这样的类就可以声明为抽象类。
在抽象类中声明方法时,如果用上abstract 关键字,则该方法为抽象方法。
在c#中,类中只要有一个方法声明为抽象方法,则这个类必须被声明为抽象类。
抽象类主要用于提供多个派生类可共享的基类的公共定义,和非抽象类的主要区别为:
抽象类不能直接实例化。
抽象类可以直接包含抽象成员,但非抽象类中则不可以。
抽象类不能被密封。
抽象类的声明格式为:
访问修饰符 abstract class 类名 :基类或 接口
{ // 类成员或方法 }
声明抽象类时,除abstract 关键字、class 关键字和类名外,其他的都时可选项。
抽象类中定义的方法,如果加上 abstract 关键字,就是一个抽象方法。
抽象方法不提供具体的实现,有的方法并不需要具体的实现,而是让派生类来重修实现。
声明抽象方法注意点:
抽象方法必须声明在抽象类中。
声明抽象方法时,不能使用 virual 、static、private修饰符。
例: public abstract class TestClass
{
public abstract void AbsMethod(); //抽象方法
}
当从抽象类派生一个非抽象类时,需要在非抽象类中重写抽象方法,以提供具体的实现,重写抽象方法时用override 关键字。
抽象派生类的实例化不能从基类创建对象,只能通过子类创建对象并实例化。
3. 密封类和密封方法
密封类可以用来限制扩展性,如果密封了某个类,则其他类不能从该类继承;如果密封了某个成员,则派生类不能重写该成员的实现。
密封类的语法格式:
访问修饰符 sealed class 类名 :基类或接口
{ //密封类的成员 }
如果类的方法声明中包含了sealed 修饰符,则称该方法为密封方法。
密封方法只能用于对基类的虚方法进行实现,因此,声明密封方法时,sealed修饰符总是和override 修饰符同时使用。
- 4.1.2 类的多态
- 类的继承、类的多态
- 类的多态
- 类的多态
- 类的多态
- 类的多态的实现
- MSDN---类的多态
- 认识类的多态
- c++ 类的多态
- 类的多态 Polymorphism
- Java类的多态
- OC 类的多态
- 理解 Delphi 的类(七) - 认识类的多态
- 有关类的接口,实现类的多态
- 3.4(类的继承,类的多态,泛型类)
- C++类的的继承和多态机制
- C++ 类的多态(方法的重载与继承)
- C++:类的多态与虚函数的使用
- 欢迎使用CSDN-markdown编辑器
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (
- LeetCode算法题目:Unique Binary Search Trees
- 语义分析的一些方法
- CRC16-CCITT校验算法实现(C#版)
- 4.1.2 类的多态
- java中局部变量可以使用访问控制修饰符吗?
- poj2488
- 【工程经验】Linux命令行下常用svn命令总结
- 给初学者的RxJava2.0教程(八)
- Java ConcurrentModificationException异常原因和解决方法
- 翻转链表
- hdu 1022 简单的栈应用
- Tomcat 安装以及部署网站实例