C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# 接口interface

C# 接口interface的实现(多接口、同名冲突、继承+接口)

作者:影寂ldy

本文主要介绍了C# 接口interface的实现(多接口、同名冲突、继承+接口),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、接口 核心概念

接口(interface):是一套行为规范/标准,只定义成员声明,不写实现。

类/结构体实现接口,必须实现接口中所有成员

接口核心特点(必考)

二、基础语法与定义

1. 接口定义

//书的接口:规范书本必须拥有的属性和方法
interface IBook
{
    int Id { get; set; }
    int Name { get; set; }
    void F1();
}

//纸张的接口:规范纸张必须拥有的属性和方法
interface IPaper
{
    string color { get; set; }
    void F2();
}

2. 关键字区分(超级重点)

三、多接口实现(一个类实现多个接口)

C# 类只能单继承,但可以实现无数个接口,解决多继承问题。

完整实现代码

// Book类 同时实现 IBook、IPaper 两个接口
class Book : IBook, IPaper
{
    // 实现IBook接口属性
    public int Id { get; set; }
    public int Name { get; set; }

    // 实现IPaper接口属性
    public string color { get; set; }

    // 实现IBook方法
    public void F1()
    {

    }

    // 实现IPaper方法
    public void F2()
    {

    }

    // 类自己的扩展属性(接口没有)
    public string StudentId { get; set; }
}

规则

实现多个接口时,必须重写/实现所有接口的所有属性和方法,缺一不可。

四、接口同名成员冲突问题(重点难点)

1. 场景介绍

父类 Book 中已经存在 StudentId 属性

新接口 IPeople 中也定义了同名 StudentId 属性

interface IPeople
{
    string StudentId { get; set; }
}

2. 子类继承父类 + 实现接口

SmallBook 继承 Book、同时实现 IPeople

class SmallBook : Book, IPeople
{
    // 父类Book已经有StudentId
    // 满足接口IPeople的成员要求,所以【不用重复实现】

    // 如果想要重新实现接口、覆盖父类属性,需要加 new
    public new string StudentId { get; set; }
}

核心规则(必背)

五、接口 VS 抽象类(高频面试)

六、完整可运行测试代码(我帮你补全 Main 调用)

internal class Program
{
    static void Main(string[] args)
    {
        // 1. 实例化实现多接口的类
        Book b = new Book();
        b.Id = 1;
        b.Name = 1001;
        b.color = "白色";
        b.StudentId = "S1001";
        b.F1();
        b.F2();

        // 2. 子类继承父类 + 实现新接口
        SmallBook sb = new SmallBook();
        sb.StudentId = "S2002"; // new 新属性

        Console.WriteLine("Book颜色:" + b.color);
        Console.WriteLine("子类StudentId:" + sb.StudentId);
    }
}

七、满分必考总结

八、背诵口诀

接口定规范,无体不能实例化;单类继承多接口,父有同名不用写;想要覆盖加 new,多态扩展最灵活

到此这篇关于C# 接口interface的实现(多接口、同名冲突、继承+接口)的文章就介绍到这了,更多相关C# 接口interface内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文