1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C# 子类实例化基类 基类使用不了子类的方法_C# 接口与抽象类实例分析

C# 子类实例化基类 基类使用不了子类的方法_C# 接口与抽象类实例分析

时间:2018-07-27 19:05:33

相关推荐

C# 子类实例化基类 基类使用不了子类的方法_C# 接口与抽象类实例分析

初学者在学习C#过程中,对面向对象概念,接口、抽象等关系往往难以准确理解。本文主要通过简单举例对接口、抽象类等概念进行简单说明,希望对初学者有所帮助,如有不对之处欢迎批评指正。

接口interface

接口简单理解就是一种规范,是由一组函数声明组成。 它既不能直接实例化为对象,也不能定义数据成员。因此,接口只是方法和属性声明的集合。在接口的实现过程中需要将所声明的方法全部实现。

抽象类

类是一个具有相同特征和行为的抽象,而抽象类(class 前加上 abstract)没有指出行为的具体细节,而由他的子类去实现相应的行为。与接口相比较抽象类可以由属性、方法,其方法包括抽象方法与非抽象方法。抽象类也不能被实例化,只能通过引用子类实例化。

举例分析说明

本文以动物、猫、鸡、鱼对接口与抽象类进行说明。首先我们创建动物抽象类animal,该类具有name属性,Breathe()方法与Move()方法,其中Move()方法为抽象方法,即在子类中需要实现(重写)。anlimal抽象类描述如下:

animal抽象类

定义接口类Imove,该接口声明了两个方法,分别为move()与eat(),这两个方法需要在子类中全部实现。接口的声明定义如下:

定义接口类Imove

猫cat类继承了动物类animal的属性与方法,因此cat类是animal的派生类,Cat类同时可以有自身的属性与方法。Cat类定义描述如下:

cat类

在Cat类中需要对其基类中所定义的抽象方法Move进行重写,注意关键词override的使用。而对非抽象方法Breathe则直接继承使用,无需重写,另外Cat添加了自身的单独方法voice用于输出猫的叫声。同样我们可以继续定义鸡Chicken类,派生于基类animal。定义如下:

Chicken类

最后我们通过Fish类对接口实现及抽象类的继承进行说明,Fish类继承于animal类与接口Imove,其定义形式如下:

Fish类

该类由于继承了animal与Imove因此需要对animal中的抽象方法Move进行重写,同时需要对Imove接口声明的方法进行实现。上图中实现了move方法与eat方法,通过override重写了抽象类的Move方法。最后在主函数部分对各类进行实例化及函数调用。截图如下:

类的实例化及函数调用

执行结果输出

以上给出了抽象类与接口的使用,通过animal、fish、cat等类的设计对两者之间在使用过程中的语法及区别进行了简单分析。通过分析最终可以获取以下结论。

接口与抽象类的区别

本头条号长期关注于青少年编程资讯分享;编程课程、素材、代码分享及青少年编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。期待大家关注!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。