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()
}
我想得到“I'm Sub”,但我得到的是“I'm Super”。
我已经知道 sub.WhoAmI 会调用 sub.Super.WhoAmI,但我仍然想知道是否有办法获得“我是 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()
我可以得到“我是潜艇”。
森栏
MMTTMM
相关分类