• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#类的继承

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

继承是面向对象编程的一个重要特性。任何类都可以从另一个类中继承,这就是说,这个类拥有它继承的类的所有成员。在OOP 中,被继承的类称为父类(也称为基类)。注意,C#中的对象仅能直接派生于一个基类,当然基类也可以有自己的基类。

类的继承一个重要作用是子类可重用父类的代码。这样就可以在一个地方集中维护一份代码,避免了很多的重复的代码。比如我们已经有一个Car类。在这个Car中有两个最基本的方法启动发动机和停止发动机 (1)startEngine();(2)StopEngine();

class Car
    {
        public int StartEngine()
        {
            //启动发动机的代码
            return 0;
        }

        public int StopEngine()
        {
            //停止发动机的代码
            return 0;
        }
    }

 

这时候我们的系统需要有两个新类,ModelACar和ModelBCar。它们都需要同样的启动发动机和停止发动机功能。除此之外,每个类还都有自己特殊的功能。如果没有继承,我们怎么办呢?很简单啊,把Car类中的这两个方法copy过来就可以了。

class ModelACar
    {
        public int StartEngine()
        {
            //启动发动机的代码
            return 0;
        }

        public int StopEngine()
        {
            //停止发动机的代码
            return 0;
        }

        public void ModelAFucntion1()
        {

        }

        public void ModelAFucntion2()
        {

        }

    }

    class ModelBCar
    {
        public int StartEngine()
        {
            //启动发动机的代码
            return 0;
        }

        public int StopEngine()
        {
            //停止发动机的代码
            return 0;
        }

        public void ModelBFucntion1()
        {

        }

        public void ModelBFucntion2()
        {

        }
    }

 

现在问题就来了,如果有十种新的类都需要Car类中同样的启动和停止发动机的方法,那你怎么办?在十个类中都copy同样的代码吗?可以。但是很烦啊。尤其是以后修改维护的时候,更烦。少改了一个地方,就会出问题。所以继承就是来帮我们解决这样的问题。我们只需要新的类继承Car类就可以了。新的类自动就有了Car类的全部方法。

继承的语法和简单。

class 子类的名字 : 父类的名字

{

}

使用继承后,ModelACar和ModelBCar的代码变成这样了。

class ModelACar : Car
    {
        
        public void ModelAFucntion1()
        {

        }

        public void ModelAFucntion2()
        {

        }

    }

    class ModelBCar : Car
    {
       
        public void ModelBFucntion1()
        {

        }

        public void ModelBFucntion2()
        {

        }
    }

但是我们同样可以在ModelACar和ModelBCar 中访问StartEngine和StopEngine方法。

在继承一个父类时,成员的可访问性就成了一个重要的问题。子类不能访问父类的私有成员,但可以访问其公共成员。不过,子类和外部的代码都可以访问公共成员。这就是说,只使用这两个可访问性,不能让一个成员可由父类类和子类访问,而不能由外部的代码访问。


为了解决这个问题,C#提供了第三种可访问性:protected,只有子类才能访问父类的protected 成员。对于外部代码来说,这个可访问性与私有成员一样:外部代码不能访问private 成员和protected 成员。

 

来开一个具体的例子吧。你创建一个项目。解决方案名称为Sloution24,项目名称为Exercise24,项目类型为控制台程序。

新建三个类文件,名称分别为Car,ModelACar,ModelBCar。

 

点击Car.cs。修改代码如下。

点击ModelACar.cs。修改代码如下。

 

点击ModelBCar.cs。修改代码如下。

 

点击Program.cs。修改代码如下。

 

运行结果

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
AMOolapTestC#generatetsqlandmdx发布时间:2022-07-13
下一篇:
.NETC#杂谈(1):变体-协变、逆变与不变发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap