继承小结

继承,封装和多态是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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值