‫在本视频和下一个视频中,
‫您将学习有关接口的知识, 它们非常重要, 因为它们确实扩展了面向对象编程和类的功能｡
‫那么什么是接口呢？
‫好吧, 把接口想象成契约, 其中实现接口的类同意为该接口定义的所有对象提供实现｡
‫这意味着接口将包含合同条款､ 方法和属性, 但是我们如何实现它们取决于实现接口的类｡
‫只要在我们的类中实现了这些接口方法, 接口就会保持快乐｡
‫因此接口不能包含任何实现｡
‫这很重要｡
‫因此, 它们的名称通常以IE作为前缀, 以区别于其他尖锐物体｡
‫我们使用interface关键字创建接口｡
‫现在, 让我们看看如何在实践中做到这一点｡
‫好吧, 我会的
‫我们回到了Visual Studio｡
‫因此, RC Sharp类中最常用的功能之一是与类的实例进行比较｡
‫这是使用equals方法完成的｡
‫这将进行比较, 以查看对这两个类的引用是否相同｡
‫但是, 我们希望比较它们, 并根据其他字段查看它们是否相等｡
‫因此, 我们可以通过实现一个名为I Equitable的接口来实现这一点｡
‫在我们的示例中, 我们有一个名为Ticket的类, 它定义了一个名为duration（以小时为单位）的属性｡
‫让我们真实的创建这个类｡
‫这里我有一个新的类, 实际上我可以选择这里, 或者使用快捷键, K和C,
‫我把它叫做一张票｡
‫正如我所说的, 这个票证只有一个属性和一个构造函数｡
‫把它们放在这里｡
‫因此, 这个属性用于存储票证和我们的票证的持续时间｡
‫这里还有构造函数｡
‫现在, 让我们继续实现AI公平接口｡
‫所以我们使用了类似于继承的方法, 我们使用冒号, 然后是我们要使用的接口.
‫你看有很多这样的人｡
‫我想用的是高公平性｡
‫现在, 您需要定义要比较的对象类型｡
‫所以在这里我想把票互相比较一下｡
‫这就是为什么我需要添加ticket关键字｡
‫现在, 您会注意到Visual Studio并不是很满意,
‫因为它说定义一个值类型或类实现的通用方法来创建特定的方法｡
‫但是我们这里遇到的问题是ticket没有实现接口成员, 等价ticket等于ticket｡
‫我们可以很容易地解决这个问题, 只要继续前进并实现它｡
‫因此, 我们可以使用所有成员来显式实现它们, 也可以手动实现｡
‫让我们做真实的快速｡
‫所以基本上我想返回一个布尔值, 它将检查我传递的任何票证, 也就是另一个票证,
‫是否与票证相同｡
‫它是调用此方法的对象｡
‫所以票｡
‫我们将其与另一个票证进行比较, 然后比较持续时间小时数｡
‫因此, 如果它们具有相同的持续时间, 那么我们将假设它们是相同的票｡
‫我们可以直接返回这个以小时为单位的持续时间与其他以小时为单位的持续时间的比较结果｡
‫因此, 基本上我们说, 这个票证的持续时间以小时为单位, 而另一个票证的类型也是票证｡
‫它的持续时间以小时为单位, 我们将两者进行比较｡
‫而这个比较, 这个双等号, 基本上会还真还是假？
‫这是布尔运算符在左边和右边｡
‫所以它所做的就是把它的左边和右边进行比较｡
‫如果它们是相同的, 则返回true｡
‫否则将返回false｡
‫基本上就是说, 这个方法equals将返回true｡
‫如果调用equals方法的票据与我们比较的票据具有相同的持续时间（以小时为单位）, 则返回true｡
‫如果不是, 则返回false｡
‫好的, 让我们回到我们的程序, CSE, 并实际使用它｡
‫因此, 我们将创建两个票证, 一个是TW 1, 另一个是新票证,
‫其持续时间为10小时｡
‫然后我们复制这个并创建一个票证2, 它也有10个小时, 现在我们可以比较它们｡
‫这里我们用右边的控制线来显示两个点等于, 然后和它比较｡
‫所以这里我基本上是比较第二张票和第一张票, 然后用相等的方法比较.
‫现在我们来真实的地运行一下｡
‫你会发现这是真的｡
‫而对于equals方法通常不是这样的, 因为如果你用普通的equals方法比较两个对象, 可以这么说｡
‫所以如果我们不去实现这个, 我们先把它去掉｡
‫让我们把这些都注释掉, 然后比较一下｡
‫你看, 方法还在｡
‫这个equals仍然有效, 因为equals是一个普遍存在的方法｡
‫现在你可以看到它说false因为equals是一个在对象类内部的方法.
‫对象类总是有这个equals方法因为每个类都继承自object.
‫但现在我们要做的是通过使用I equity接口来实现我们自己的equals方法｡
‫因此, 我们使用了一个特定的接口, 允许我们以自己的方式进行比较, 可以说, 并实现我们自己的代码｡
‫所以现在如果我们比较两者,
‫我们不是在比较对象是否和我们要比较的对象完全一样, 而是如果在我们的例子中时间和我们的时间是一样的, 那么我们的持续时间也是一样的, 然后它会返回true｡
‫所以如果时间和我们的时间不一样, 假设是6, 那么它会返回false,
‫因为我们要比较的两张票的持续时间不一样｡
‫这只是一个使用简单接口的例子, 正如你所看到的, 在创建项目时,
‫有很多接口会自动存在｡
‫但我们将在下一个视频中了解如何创建自己的界面并使用它们｡
‫那到时见｡