C#继承

本文探讨了C#中继承的本质及其特点,包括派生类的扩展性、成员覆盖及多态性展示,并介绍了如何通过接口实现多重继承,提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承本质 重用代码 继承的思想实现了 属于 is-a的关系

* 继承的特点
 * 1.派生类是对基类的扩展 派生类可以添加新的成员 但是不能移除已经继承的成员的定义
 * 2.继承是可以传递的 如果C从B中派生 B又从A中派生 那么C不仅继承了B中声明的成员 同样也继承了A中声明的成员
 * 3.构造函数和析构函数不能被继承 除此之外其他成员能被继承  基类中成员的访问方式只能决定派生类能否访问她们
 * 4.派生类如果定义了与继承而来的成员同名的新成员 那么就可以覆盖已继承的成员 并不是删除这些成员 知识不再访问这些成员
 * 5.类可以定义虚方法 虚属性 虚索引指示器 它的派生类能够重载这些成员 从而使类可以展示出多态性
 * 6.派生类只能从一个类中继承 可以通过接口实现多重继承

* C#不支持多继承 可以使用接口实现多重继承 只支持单继承

使用接口实现多继承代码示例:

class Rectangle
    {
        protected int length;
        protected int width;

        public Rectangle()
        {
            Console.WriteLine("Rectangle::无参构造函数");
        }
        public Rectangle(int x, int y)
        {
            length = x;
            width = y;
            Console.WriteLine("Rectangle::参数化构造函数");
        }

        ~Rectangle()
        {
            Console.WriteLine("~Rectangle()");
        }
        public int GetArea()
        {
            return length * width;
        }

        public void Display()
        {
            Console.WriteLine("长度:{0}", length);
            Console.WriteLine("宽度:{0}", width);
            Console.WriteLine("面积:{0}", GetArea());
        }
    }

    public interface PaintArea
    {
        int getArea();

    }
    class CRetangle : Rectangle, PaintArea
    {
        protected int height;
        public CRetangle()
        {
            Console.WriteLine("CRetangle::无参构造函数");
        }

        public CRetangle(int x = 0, int y = 0, int z = 0) : base(x, y)
        {
            height = z;
            Console.WriteLine("CRetangle::参数化构造函数");
        }
        ~CRetangle()
        {
            Console.WriteLine("~CRectangle()");
        }
        public int GetVolume()
        {
            return GetArea() * height;


        }

        public int getArea()
        {
            return 100;
        }
        public void Display()
        {
            Console.WriteLine("长度:{0}", length);
            Console.WriteLine("宽度:{0}", width);
            Console.WriteLine("面积:{0}", GetArea());
            Console.WriteLine("体积:{0}", GetVolume());
            Console.WriteLine("接口:{0}", getArea());
        }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值