欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

对C# 多态的理解

程序员文章站 2022-06-16 18:52:43
面向对象三要素:封装、继承、多态。封装和继承,这两个比较好理解,但要理解多态的话,可就稍微有点难度了。今天,我们就来讲讲多态的理解。我们应该经常会看到面试题目:请谈谈对多态的理解。其实呢,多态非常简单...

面向对象三要素:封装、继承、多态
封装和继承,这两个比较好理解,但要理解多态的话,可就稍微有点难度了。今天,我们就来讲讲多态的理解。
我们应该经常会看到面试题目:请谈谈对多态的理解。
其实呢,多态非常简单,就一句话:调用同一种方法产生了不同的结果。
具体实现方式有三种。

一、重载

重载很简单。

二、重写父类中的虚方法

关于继承,还是要谈一下is和as运算符的

我们都知道,所有的类都是默认继承system.object这个类的,也就是说所有的类都可以转化为object。子类可以转换为父类,毕竟子类就属于父类。

在上面这个例子,myclass类是继承baseclass类的,也就是说myclass可以转为baseclass。可能,我们会想到强制转换 baseclass=(baseclass)myclass,这样做是可以的,但如果myclass继承的不是baseclass则会抛出异常,这样不好。这时,应该用as与is运算符,baseclass baseclass = myclass as baseclass,这句话,如果运行出错的话,会将null赋值给baseclass,也就是说,在使用baseclass这个对象之前,我们只需判断是否为空就行了。

三、实现抽象类中的方法,也是使用的override关键字

老生常谈,抽象类是不可以实例化的,抽象类的目的就是为了让其他类继承,而且只能继承一个类,如果想要实现多重继承,便诞生了接口。

总结

注意点:

1、好好体会多态的实现,渐渐地会发现面向对象程序设计的魅力。

2、抽象类的目的就是为了继承,想要实现多重继承,就需要接口了。

3、抽象类不可以实例化,它是可以有实体方法的,继承这个抽象类的实例可以调用抽象类里面的实体方法。

4、会熟练使用is和as运算符,不要一味地使用强制转换

以上就是对c# 多态的理解的详细内容,更多关于c# 多态的理解的资料请关注其它相关文章!

相关标签: c# 多态