Go中如何实现虚拟继承

  1. Go中如何实现“虚拟继承”?

  2. go lang 编译器版本:“1.3.1 windows/amd64”,是否支持 Go 的“虚拟继承”?

我从来没有听说过像 C 这样的语言可以支持“虚拟”,所以我真的误解了。


慕姐4208626
浏览 201回答 3
3回答

烙印99

虚拟继承不仅解决了多重继承的问题,还赋予了我们多态性。package mainimport (    "fmt"    "math")type Form interface {    Color() string    Area() float64}type form struct {    color string}func (f *form) Color() string {    return f.color}type Circle struct {    form    radius float64}func (k *Circle) Area() float64 {    return math.Pi * k.radius * k.radius}type Rectangle struct {    form    width, height float64}func (r *Rectangle) Area() float64 {    return r.width * r.height}func main() {    var forms [2]Form    forms[0] = &Circle{        form:   form{ "black" },        radius: 5.0,    }    forms[1] = &Rectangle{        form:   form{ "read" },        width:  2.0,        height: 3.0,    }    for _, f := range forms {        fmt.Printf("%s: %.2f\n", f.Color(), f.Area())    }}这里我们有一个数组,它们有一些共同点(Color和Area),我们可以在这个数组上迭代调用相同的函数,并且总是会发生正确的事情。这只是多态的优点之一。它在大多数设计模式中扮演着重要的角色。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go