C#继承与接口

继承的使用首先是为了简化我们的程序,避免同一性质的数据浪费过多的内存空间,同时也是为了更好的维护,就是当我们只想改变一个类中的数据时,就可以改变所有用到这个类的数据了。继承的使用是以类而言的,通过继承关系,一个类可以继承该基类所有成员数据和方法函数,当然该类也可以重新修改自己所继承的基类的方法等。类不支持多重继承,只能一个一个继承,例如:class Gezi:birdclass这就是鸽子类继承鸟类的继承。而接口是可以多重使用的。public class GEzi,inteface1,interface2这就是接口的多重使用,中间用逗号隔开。举个例子:比如鸟类的一般属性有羽毛,喙,爪子,以及飞行等,而鸽子不仅具有一般鸟类的属性,还具有自己独特的属性,当我们研究一些特定的鸟类时,如果重复定义这些相同的属性,既浪费了内存空间,又不利于后期维护。
下面首先先定义了一个基类,它包含一般鸟类所拥有的特性:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    class BIRD
    {
        private string feather;
        private string length;
        private float weight;
        public string Feather
        {
            get { return feather; }
            set { feather = value; }
        }
        public string Length
        {
            get { return length; }
            set { length = value; }
        }
        public float Weight
        {
            get { return weight; }
            set { weight = (float)value; }
        }
        public void FLY()
        {
            Console.WriteLine("我可以飞");
        }
        public void Eat()
        { Console.WriteLine("我可以吃"); }
        public virtual void Speed()
            //virtual关键字所代表的是虚方法,是可以被他的继承类改变重写的;
        {
            Console.WriteLine("这是鸟的速度");
        }
    }
}


又定义了两个类,鸽子类和大雁类,他们都继承鸟类的一般属性:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    class GEZI:BIRD
    //这里是鸽子类继承鸟类的一般属性
    {
        public void SHOW()
        {
            Console.WriteLine("我可以秀");
              
        }
        public void SHIlu()
        {
            Console.WriteLine("我可以认路");
        }

    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    class DAyan:BIRD
        //这时大雁继承的鸟类的一般属性;
    {
        public void Flytosouth()
        {
            Console.WriteLine("我要往南飞");
        }
        public void Sleep()
        {

            Console.WriteLine("我可以冬眠");
        }
        public override void Speed()
            //重写基类中的speed方法,使用override关键字;
        {
            Console.WriteLine("这时大雁的速度");
        }

    }
}

下面的是主函数中的调用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    class Program
    {
        static void Main(string[] args)
        {
            GEZI gezi = new GEZI();
            gezi.Eat();//这时鸽子类继承的鸟类中的;
            gezi.FLY();
            gezi.SHOW();
            gezi.SHIlu();
            gezi.Speed();//这里调用的是基类中的虚方法;
            gezi.Weight = 100;
            float wei = gezi.Weight;
            Console.WriteLine("鸽子的体重是:"+wei+"G");
            Console.WriteLine("下面是大雁的");
            DAyan dayan = new DAyan();
            dayan.FLY();//这是大雁类继承的鸟类中的;
            dayan.Eat();
            dayan.Sleep();
            dayan.Flytosouth();
            dayan.Weight = 200;
            float wei1 = dayan.Weight;
            dayan.Speed();//这里是调用基类中重写的大雁的速度;
            Console.WriteLine("大雁的体重是:"+wei1+"G");
            Console.Read();
        }
    }
}

结果是:
在这里插入图片描述

上面就是继承的一些用法;
下面讲的是接口的一些用法:类与类之间叫做继承,类与接口之间叫做实现。接口中只能包含方法、属性等的声明,不能有数据变量,以及修饰符等。下面是定义了几个接口以及实现该接口的类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    interface Interface1
        //这时接口1
    {
        void fun1();
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    interface Interface2:Interface1
        //接口与接口之间是可以实现的,这样2就有1的功能了;
    {
        void fun2();
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    interface Interface3
        //这是接口3;
    {
        void fun3();
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    class Class1 : Interface2, Interface3
        //接口的实现;
    {
        public void fun1()
        {
            Console.WriteLine("first") ;
        }

        public void fun2()
        {
            Console.WriteLine("second");
        }

        public void fun3()
        {
            Console.WriteLine("third");
        }
    }
}

以及最终的运行程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 继承和接口
{
    class Program
    {
        static void Main(string[] args)
        {
            Class1 cla = new Class1();
            cla.fun1();
            cla.fun2();
            cla.fun3();
            Console.Read();
        }
    }
}

这里是结果:
在这里插入图片描述
以上就是类与类的继承,类与接口的实现功能的一些用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值