package main
import "fmt"
type Super struct{}
func (super *Super) name() string {
return "Super"
}
func (super *Super) WhoAmI() {
fmt.Printf("I'm %s.\n", super.name())
}
type Sub struct {
Super
}
func (sub *Sub) name() string {
return "Sub"
}
func main() {
sub := &Sub{Super{}}
sub.WhoAmI()
}
Я хочу получить «Я Суб», но вместо этого я получаю «Я супер».Как вызвать дочерний метод в родительском методе?
Я уже знаю sub.WhoAmI будет называть sub.Super.WhoAmI, но я все еще хочу знать, есть ли способ получить «I'm Sub». В Python, когда я пишу следующий код:
class Super(object):
def name(self):
return "Super"
def WhoAmI(self):
print("I'm {name}".format(name=self.name()))
class Sub(Super):
def name(self):
return "Sub"
if __name__ == "__main__":
sub = Sub()
sub.WhoAmI()
Я могу получить «Я подчинен».