class Base: Equatable {
static func == (lhs: Base, rhs: Base) -> Bool {
lhs.id == rhs.id
}
let id: String
init(id: String) {
self.id = id
}
}
class SubClass: Base {
public var id2: String?
public init(id1: String, id2: String? = nil) {
self.id2 = id2
super.init(id: id1)
}
static func == (lhs: SubClass, rhs: SubClass) -> Bool {
lhs.id2 == rhs.id2 && lhs.id == rhs.id
}
}
print(a != b) // result: false
// Calls `Base` class's static func ==
print(a == b) // result: false
// Calls `SubClass` class's static func ==
I have a simple super class and subclass, subclass inherits Base
and also implements
static func ==
When calling a != b
, it calls Base
class's ==
implementation instead of SubClass
's ==
implementation, why?
But when calling a == b
, it actually call's SubClass
's ==
implementation, why?
I expect both !=
and ==
calls SubClass
's ==
implementation