(三十)C#编程基础复习——继承

特此声明:本教程内容可能有部分参照其他博主的观点或描述,但始终不影响我学习的热情,代码全部自己手工敲打,编辑此教程目的不是为了博取大家眼球,也不是为利益所驱,只是纯属为了方便自己学习,编辑的过程中也让自己加深了对C#各个基础的印象,同时也让自己编码过程更加流畅顺利,最后还能帮助到有需要的人,代码都是自己亲测有效,如有侵权可以联系本人删除。

继承与封装和多态统称为面向对象编程的三大特性,在创建一个新类时,我们可以使用这个新定义的类继承一个已有的类,通过继承可以在创建新类时重用、扩展和修改被继承类中定义的成员。被继承的类称为“基类(父类)”,继承基类的类称为“派生来(子类)”。

需要注意的是,C#中只支持单继承,也就是说一个子类只能继承一个父类,但是继承是可以传递的,例如ClassC继承了ClassB,而ClassB继承了ClassA,那么ClassC将继承ClassB和ClassA中的所有成员。

一、父类和子类

要使用一个类继承另一个类需要使用到冒号,如下所示:

class 子类:基类
{
    ... ...
}

示例代码如下:

namespace _017
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Rectangle oblong = new Rectangle();
            oblong.setWidth(3);
            oblong.setHeight(4);
            int area = oblong.getArea();
            Console.WriteLine("长方形的面积为:{0}",area);
            Console.ReadKey();
        }
    }
    //父类
    class Shape
    {
        protected int width, height;//只能在父类、子类中使用
        public void setWidth(int w)
        {
            width = w;
        }
        public void setHeight(int h)
        {
            height = h;
        }
    }
    //子类
    class Rectangle : Shape
    {
        public int getArea()
        {
            return width * height;
        }
    }
}

运行结果:

二、多重继承

与单继承相反,多重继承则是指一个类可以同时继承多个基类,C#并不支持多重继承,但是可以借助接口来实现多重继承。

示例代码如下:

namespace _017
{
    class Program
    {
        static void Main(string[] args)
        {
            Rectangle oblong = new Rectangle();
            oblong.setWidth(3);
            oblong.setHeight(4);
            int area = oblong.getArea();
            int girth = oblong.getGirth();
            Console.WriteLine("长方形的面积为:{0}",area);
            Console.WriteLine("长方形的周长为:{0}",girth);
            Console.ReadKey();
        }
    }
    //父类
    class Shape
    {
        protected int width, height;//只能在父类、子类中使用
        public void setWidth(int w)
        {
            width = w;
        }
        public void setHeight(int h)
        {
            height = h;
        }
    }
    //定义接口
    public interface Perimeter
    {
        int getGirth();
    }
    //子类
    class Rectangle : Shape,Perimeter 
    {
        public int getArea()
        {
            return width * height;
        }
        public int getGirth()
        {
            return (width + height) * 2;
        }
    }
}

运行结果:

posted @   代号六零一  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示