```
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的方法,我应该怎么写呢?
可以试试这样
```
func gg(cc c) {
cc.f()
}
func main() {
bb := b{a{}}
//bb.g()
gg(bb)
}
```
#5
更多评论
再附加一个python版本的,为什么go的继承和其他的不太一样
```
class A:
def f(self):
print(1)
def g(self):
self.f()
class B(A):
def f(self):
print(2)
if __name__ == '__main__':
b = B()
b.g()
```
#1