c#继承

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40776651/article/details/81806023

继承是面向对象的关键要素之一。在程序设计过程中,类的层次结构有两种基本的结构方式:

1、自顶向下:从基础类型开始向下分解,不断得到新的派生类型。例如:可以从“文字”中细化出“表形文字”、“表意文字”和“表音文字”等主要文字类型,“表音文字”又可以进一步的细分为“音节文字”和“音素文字”等类型。

2、自底向上:对现有的一组具体类型进行抽象,得到新的基础类型。例如:对“猫”、“狗”、和“猪”等概念进行归类,得到更为抽象的“动物”。

在复杂软件设计中,上述两种方式往往要综合运用。.net类库就是个典型的面向对象的实现:Object类是其他所有类的基类,而所有的c#数据类型都是从类中衍生而来的。

派生类能够继承基类的所有成员,并增加自己的成员来进行功能扩展,下面是代码实例:

using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Bus bus = new Bus();
            Console.WriteLine("公共汽车行驶100公里需要{0}小时", bus.Run(100));

            Truck truck = new Truck();
            Console.WriteLine("卡车行驶100公里需要{0}小时", truck.Run(100));

            Console.ReadLine();
        }
        /// <summary>
        /// 汽车类   父类(基类)
        /// </summary>
        public class Automobile
        {
            //偷懒 直接public了  不是好习惯  勿模仿
            public float speed { get; set; }

            public float weight { get; set; }

            public float Run(float distance)
            {
                return distance / speed;
            }
           
        }
        /// <summary>
        /// 公共汽车类    子类(派生类)
        /// </summary>
        public class Bus : Automobile
        {
            public int passengers { get; set; }
            public Bus()
            {
                passengers = 20;
                speed = 50;
                weight = 10;
            } 
        }

        /// <summary>
        /// 卡车类    子类(派生类)
        /// </summary>
        public class Truck : Automobile
        {
            public float load { get; set; }
            public Truck()
            {
                load = 30;
                speed = 55;
                weight = 15;
            }
        }
    }
}

 

展开阅读全文

C# 关于接口的继承

10-01

接口 继承 接口 以后。在另一个类实现子接口。调用这个类的时候,找不到 子接口 里新增的方法(类里已经实现了)rnrn我做在一个项目。三层开发的。因为不好贴上代码,所以只能用文字形容一下了。看的有点晕的话请见谅。。。rn我在业务逻辑层有两个文件夹 BLL 和 IBLL rnIBLL里有一个类 IBasic 里面有IBasic(父类)类型的ibasic对象 可以根据构造函数传进来的参数 实例化不同类(简单工厂)。同时有 增 删 改 查 4个方法rn接着我在rnBLL文件夹里写了一个ImpleRoomType类。继承了 IBasic 类。多增加了一个 查询方法rnrnrnrn在数据访问层有两个文件夹 DAL 和 IDALrnIDAL里有一个接口 Ibasic 里面有 增 删 改 查 4个方法(对应IBLL文件夹下的 IBasic)rn 还有一个接口 IRoomType 继承了 Ibasic 接口 里面有一个 查询方法(对应BLL文件夹下的 ImpleRoomType)rnrnDAL 文件夹里有一个 BaseRoomType 类,实现了 IRoomType 接口(IDAL里的 Ibasic 以及 IRoomType 接口方法都实现了)rnrnrnrn问题来了。现在 ImpleRoomType 类 新增的查询方法体里 使用父类里的 ibasic对象 想调用 BaseRoomType 里的新增的查询方法 可是无法访问到。这是为什么呢? 我把 IRoomType 接口的查询方法 挪到 Ibasic 父接口里,又可以访问了。rn难道 C# 里 接口不能继承接口吗?可是我实现 IRoomType 接口5个方法没有报错啊rnrn不知道各位大侠看晕了没有。。。我写的都有点晕了。。。rnrnrn 论坛

没有更多推荐了,返回首页