0
点赞
收藏
分享

微信扫一扫

浅谈继承和接口的作用(C#)

禾木瞎写 2022-05-04 阅读 187
c#

继承和接口


一、继承和接口分别是什么

    继承是什么,官方的原话是,继承(以及封装和多态性)是面向对象的编程的三个主要特征之一。 通过继承,可以创建新类,以便重用、扩展和修改在其他类中定义的行为。
    就个人理解就是通过继承可以创建子类,然后重写父类方法,在父类的基础上拓展新方法。同时由于一个父类可以由多个子类继承能实现,使用一个父类实现多个子类的方法来实现重用
    接口又是什么,官方原话说的很抽象,接口包含非抽象 class 或 struct 必须实现的一组相关功能的定义。
    通俗的讲,就是接口就是包含必须实现成员方法,因为接口不能声明实例数据,如字段、自动实现的属性或类似属性的事件(比如声明int a;这种都是错误的)。
    总结继承是为了实现类的的抽象,而接口是实现了方法的抽象

二、代码示例

1.接口代码示例

    C#代码如下(示例):

    动物接口

using System;
using System.Collections.Generic;
using System.Text;

namespace TryLearnInterface
{
    public interface IAnimal
    {
        public void Behavior();
    }
}

    人类接口

using System.Collections.Generic;
using System.Text;

namespace TryLearnInterface
{
    public interface IPerson
    {
        public void Say();
    }
}

    男人类继承人类接口和动物接口

using System;
using System.Collections.Generic;
using System.Text;

namespace TryLearnInterface
{
    class Man:IPerson,IAnimal
    {
        public void Say()
        {
            Console.WriteLine("我是男人");
        }

        public void Behavior()
        {
            Console.WriteLine("我是动物,也是男性");
        }
    }
}

    女人类继承人类接口

using System;
using System.Collections.Generic;
using System.Text;

namespace TryLearnInterface
{
    public class Woman:IPerson
    {
        public void Say()
        {
            Console.WriteLine("我是女人");
        }
    }
}

    主类输出

using System;

namespace TryLearnInterface
{
    class Program
    {
        static void Main(string[] args)
        {
            IPerson man = new Man();
            IPerson woman = new Woman();
            man.Say();
            woman.Say();
            Console.ReadKey();
        }
    }
}

    输出结果
在这里插入图片描述
    从输出结果看,通过接口实现了对应方法,接口的主要作用便在于此,实现模拟结构的继承,也就是只要继承了接口就必然会实现接口的方法。同时C#本身不支持类的多重继承,而接口支持

2.继承代码示例

    继承代码如下(示例):
    父类

using System;
using System.Collections.Generic;
using System.Text;

namespace TryInherit
{
    public class Parent
    {
        public string name="我是父类的名称,我被继承了";

        public virtual void HelloParent()
        {
            Console.WriteLine("父类方法执行了");
        }
    }
}

    子类

using System;
using System.Collections.Generic;
using System.Text;

namespace TryInherit
{
    public class Son:Parent
    {
        public override void HelloParent()
        {
            Console.WriteLine("我是子类,我重写的父类");
        }

        public void SonSay()
        {
            Console.WriteLine("我是父类方法的拓展,我是儿子");
        }
    }
}

    主类输出

using System;

namespace TryInherit
{
    class Program
    {
        static void Main(string[] args)
        {
            Parent p = new Parent();
            Son s = new Son();

            //通过子输出父的字段
            Console.WriteLine(s.name);
            //父的方法
            p.HelloParent();
            //子重写父的方法
            s.HelloParent();
            //子对父方法的拓展
            s.SonSay();
            Console.ReadKey();
        }
    }
}

    结果
在这里插入图片描述
    从以上不难看出子父继承的基础应用

总结

    写这篇比较基础的文章主要是想探究为什么要使用接口,同时也明确一下接口和继承结合起到的作用,如有不对之处还请指出。

举报

相关推荐

0 条评论