‫欢迎回来｡
‫在这个视频中, 我想谈谈密封的方法或在一般情况下, 密封关键字｡
‫因此, 如果我想重写一个方法, 我可以简单地在base子句中使它成为virtual,
‫然后在deriving子句中重写它｡
‫我们已经看到了｡
‫但如果我有另一门课呢？
‫我还能做得更好吗？
‫假设我在这里创建了一个新类, 添加类, 我将把它命名为1m3, 它将成为一个BMW
‫M3, BMW的子类或驾驶类｡
‫所以这意味着我们需要在这里使用BMW, 现在我们需要创建一个构造函数｡
‫所以我要从那里复制一个｡
‫这里我还要加上模型｡
‫所以这一个是M三｡
‫所以现在不是抱怨了｡
‫我只是加了这个, 这样它就不会抱怨了, 因为它需要一个｡
‫否则我们需要一个默认的构造函数｡
‫否则, 如果我们不想在基类中这样做｡
‫因此, 在这里我们需要一个默认的构造函数, 就像我们之前看到的那样｡
‫比如说, 这是一个默认构造函数, 默认构造函数｡
‫现在如果我把这个去掉｡
‫它没有｡
‫它仍然在抱怨, 但那是因为BMW也没有默认的构造函数｡
‫所以宝马喜欢这样｡
‫现在我们可以把这个去掉了｡
‫你现在可以看到, 它不再抱怨了｡
‫但我不想这么做, 也不想创建所有默认的构造函数, 所以更多的是关于sealed关键字.
‫假设我想重写这个方法｡
‫因此, 宝马方法维修, 这是已经覆盖从汽车现在和免费的, 也希望覆盖｡
‫我将继续创建一个覆盖空修复, 这里它已经调用了基本修复｡
‫所以它只需要调用基类, 然后是修复方法.
‫所以在这种情况下, 它将简单地调用这个修复方法｡
‫现在我可以这样做了, 我可以覆盖它, 然后创建RM 3的对象｡
‫我们创建一个3, 它将是RM 3, 这是一个新的M 3, 我将添加HP,
‫比如说260｡
‫颜色将是红色的, 型号将是m3c超级涡轮增压或其他｡
‫不是专业车｡
‫所以我就叫它RM 3超级涡轮｡
‫现在如果我调用我的RM三点修复方法, 它只会调用基方法｡
‫所以宝马超级涡轮被修好了｡
‫因此, 尽管我没有添加任何其他内容, 我只是调用了此基本修复｡
‫现在它调用了宝马的修理方法｡
‫就像你在这里看到的, 这个｡
‫好吧, 这是一回事, 但如果我想密封它呢？
‫就像我们之前说的, 如果你想密封它, 这样这个方法就不能再被覆盖了,
‫我可以简单地添加这个shield关键字｡
‫现在, 我需要在override关键字之前对执行该操作｡
‫否则就不管用了｡
‫所以你不能说, 好吧, 我要封存这个虚方法, 因为那会是相反的｡
‫所以虚的允许重写, 封的不允许重写｡
‫所以如果我用sealed替换virtual, 现在, repair也会抱怨, 因为它说它不能被sealed, 因为它不是一个覆盖｡
‫所以你只能密封重写方法, 这意味着一辆车在一辆车之上有一个虚拟的方法叫做修复｡
‫宝马继承了这种方法, 并覆盖它, 现在它密封它, 使我的RM三不能再使用它｡
‫因此, 如您所见, 无法覆写继承的成员, 因为它是密封的｡
‫所以现在我不能再重写这个方法了｡
‫这就是这个sealed关键字的意义所在｡
‫所以你禁止继承, 所以你基本上不允许继承, 你可以做同样的事情, 不仅仅是用方法,
‫你也可以用汽车｡
‫比如说, 我想封存我的宝马类, 这样它就不能从那时继承｡
‫这整个类将无法从BMW继承｡
‫所以它在这里的成功可以来源于一辆密封式宝马｡
‫好吧, 海豹突击队就是这么干的
‫它只是将其关闭以供进一步继承｡
‫好吧, 我会的
‫因此, 现在您已经看到了如何使用overwrite, 然后使用new关键字隐藏成员,
‫并且现在您看到了如何使用sealed关键字来密封overwrite方法｡