继承小结
来源:互联网 发布:番茄 软件 编辑:程序博客网 时间:2024/05/18 18:03
继承,封装和多态是OOP面向对象编程的三大特性,在C#中所有类都继承于Object类。集成用于创建新类,这些新类的行为可以是复用,扩展和修改其他类的行为。一个类只能有一个直接基类,但是继承可以传递,所有一个类可以有很多基类。
1.从概念上来说,派生类实际上是基类的特例。比如存在基类“动物类”,派生类“哺乳动物类”和“爬行动物类”。哺乳动物也是动物,但是动物就不能说是哺乳动物。类似的,子类可以是父类类型没问题,但是将父类说成子类类型就错了。2.当派生类继承自己的直接基类时,将所有基类成员都继承了,但是不会继承基类的构造函数和毁灭函数(析构函数),所以在创建派生类时,必须有自己的构造函数。
通过继承复用代码曾经被认为面向对象最重要的目标之一,但是在实际中滥用继承后患无穷,因此,真正使用继承应该是模拟大自然中的“IS_A”的关系,比如简单的狮子是一种动物的时候,在去用狮子类继承动物类。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Inherit{ class Program { static void Main(string[] args) { Parent p = new Parent(); Child c = new Child(); p = c; p.OverLoad(); p.Override(); (p as Child).OverLoad(); Console.WriteLine(p.a); Console.WriteLine((p as Child).a); } } class Parent { public int a = 1; public void OverLoad() { Console.WriteLine("parent.overload"); } public virtual void Override() { Console.WriteLine("parent.override"); } } class Child : Parent { public int a = 2; public void OverLoad() { Console.WriteLine("child.overload"); } public override void Override() { Console.WriteLine("child.override"); } }}
在这个例子中,分别创建子类对象和父类对象,并且子类对象赋值给父类对象,实际上是让一个父类类型的引用变量指向一个子类实例,也就是说“子类是一种父类”,因此再调用中,所得到的字段,方法等等都是父类中的。但是特例是重写的虚方法,调用的是子类中重写方法,这里我推测是在创建子类实例的时候,子类中重写的方法已经覆盖掉了父类中的虚方法了。
另外,我认为虚方法和重写方法在继承和多态中十分重要,让代码更加灵活,减少修改,增加复用代码
0 0
- 继承小结
- 继承小结
- 继承小结
- 继承小结
- 继承小结
- 继承小结
- 继承小结
- 继承小结
- 继承小结
- C#继承小结
- C# 继承小结
- C++继承例题小结
- 虚继承基础小结
- 多重继承小结
- C++虚继承小结
- 类,对象,继承 小结
- C++虚继承小结
- JAVA继承知识小结
- 51nod 1391 01串
- Apache zookeeper 小试牛刀
- 51nod 1393 0和1相等串
- window10 系统查看控制面板的方法
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
- 继承小结
- spark大数据分析(四)
- Android产品研发(九)-->App网络传输协议
- 51nod 1396 还是01串
- riot实现日历组件标签的编写
- [WerKeyTom_FTD的模拟赛]刻画在历史舞台上的群星
- 51nod 1402 最大值
- iOS开发基础 include和import
- android控件之ToggleButon