组合接口中其他接口方法重名
来源:1-5 接口的组合
qq_永远的稻米_0
2022-06-03 09:47:14
当接口Retiever,接口Poster,都包含同一个方法Post,接口C(接口C是A、B的组合)当我们使用接口C时,是和JAVA的一种语法根据参数不同去区分用了哪个接口的方法,还是说方法不同入参会影响具体用到了哪个接口?
相关截图:
如上图,两个接口都有Post,我现在的理解是,参数定的不一样,就会实现了不同的接口,但是实际使用中,应该是,接口中方法必须实现,不然就会报错,我一开始理解的接口的实现是抽象方法,但好像不是,实现过程中,必须包含每一个方法,Post,Get,不然就报错,那我现在的理解就成了,实际上,实现者需要实现接口中所有方法,组合接口C如果实现,是不是也得实现Retiever,Poster两个接口所有方法?这是第二个问题,
反看第一个问题,Retiever,Poster两个接口相同方法,不同参数,接口C组合之后,好像实现者这边又不能同方法名Post,只能存在一个,也就是说实现的时候我只能实现Retiever,Poster接口中一个,如何实现相同方法名Post的组合接口C呢?第三个问题
1回答
慕移动7148688
2022-06-05
这几个问题其实是统一的,go语言不允许函数重载,也就是说,不允许在同一类型中定义同名但不同参数类型的方法。你定义两个接口,然后在两个接口中各自声明一个post(url string) string方法,接着组合两个接口,这没有问题,go语言认为这是一个方法,只要你的类型实现接口中的方法,就可以看做是该接口类型。如果你在一个接口中声明post(url string) string方法,另一个接口中声明post(url string,form map[string]string) string方法,然后用第三个接口来组合前两个接口,这时候ide就直接报方法重复定义的错误了。
相似问题
回答 3
回答 1