package com.company;
class A {
void f() {
System.out.println("1");
}
void g() {
f();
}
}
class B extends A {
void f() {
System.out.println("2");
}
}
public class Main {
public static void main(String[] args) {
new B().g();
}
}
该java代码中,打印的结果是2
package main
import "fmt"
type c interface {
f()
g()
}
type a struct {
}
func (a1 a) f() {
fmt.Println(1)
}
func (a1 a) g() {
a1.f()
}
type b struct {
a
}
func (b1 b) f() {
fmt.Println(2)
}
func main() {
bb := b{a{}}
bb.g()
}
但是go的代码类似的写法打印的是1, 那么我要调用打印2的方法,我应该怎么写呢?
有疑问加站长微信联系(非本文作者)

再附加一个python版本的,为什么go的继承和其他的不太一样
用接口
所以我是要把a.g()复制一次变成b.g()吗?我是个新手,能说具体点吗?
func (a1 a) g() { a1.f() } 换成 func (a1 b) g() { a1.f() } 就可以了
可以试试这样
非常感谢