Base Class 的协议委托概念
Protocol Delegate Concept With Base Class
我对协议方法和class方法有疑问。下面的代码解释了我想要实现的目标,
protocol Test {
func abc()
}
class Base {
func abc() { }
}
class MyCustomClass: Base, Test {
}
所以,问题是 MyCustomClass
将添加哪种方法?
在我的方案中,我想添加 Test
协议方法以及 'Base' class 方法。截至目前,这允许我使用 'override' 关键字添加 Base
class 方法。
那么,有谁知道我们如何访问 Test Protocol
和 Base Class
吗?
是否可以在 MyCustomClass
中获取包含相同方法名称的两种方法?
你好像不太明白什么是协议。它只是一个保证其采用者包含某些成员的合约。
那么让我们看看您的代码,我只是稍微修改了一下:
protocol Test {
func abc()
}
class Base {
func abc() { print("Base abc") }
}
class MyCustomClass: Base, Test {
}
您的代码的重要之处在于它可以编译。为什么?通过采用 Test,MyCustomClass 承诺它包含一个 abc()
函数。它 信守 这个承诺。如何?通过从其超类 Base.
继承一个 abc()
函数
至于"what happens",试试看吧:
MyCustomClass().abc() // Base abc
我们实例化MyCustomClass,调用那个实例的abc()
,果然,继承自Base的abc()
运行起来,符合多态性的规律。
但这与协议无关!该协议无关紧要,在这里没有任何用处。您可以从示例中完全删除协议并获得完全相同的结果。该协议只是对其采用者的描述。它说 "whoever adopts me has an abc()
function," 果然,MyCustomClass 采用协议并且 有一个 abc()
函数。
我对协议方法和class方法有疑问。下面的代码解释了我想要实现的目标,
protocol Test {
func abc()
}
class Base {
func abc() { }
}
class MyCustomClass: Base, Test {
}
所以,问题是 MyCustomClass
将添加哪种方法?
在我的方案中,我想添加 Test
协议方法以及 'Base' class 方法。截至目前,这允许我使用 'override' 关键字添加 Base
class 方法。
那么,有谁知道我们如何访问 Test Protocol
和 Base Class
吗?
是否可以在 MyCustomClass
中获取包含相同方法名称的两种方法?
你好像不太明白什么是协议。它只是一个保证其采用者包含某些成员的合约。
那么让我们看看您的代码,我只是稍微修改了一下:
protocol Test {
func abc()
}
class Base {
func abc() { print("Base abc") }
}
class MyCustomClass: Base, Test {
}
您的代码的重要之处在于它可以编译。为什么?通过采用 Test,MyCustomClass 承诺它包含一个 abc()
函数。它 信守 这个承诺。如何?通过从其超类 Base.
abc()
函数
至于"what happens",试试看吧:
MyCustomClass().abc() // Base abc
我们实例化MyCustomClass,调用那个实例的abc()
,果然,继承自Base的abc()
运行起来,符合多态性的规律。
但这与协议无关!该协议无关紧要,在这里没有任何用处。您可以从示例中完全删除协议并获得完全相同的结果。该协议只是对其采用者的描述。它说 "whoever adopts me has an abc()
function," 果然,MyCustomClass 采用协议并且 有一个 abc()
函数。