飞道的博客

【Golang】非侵入式接口与侵入式接口

278人阅读  评论(0)

Go的接口是非侵入式的设计,也就是说,一个具体类型实现接口不需要再语法上显式地声明,只要具体类型的方法集是接口方法集的超集,就代表该类型实现了接口,编译器在编译时会进行方法集的校验。

侵入式接口

实现类需要明确声明自己实现了某个接口。如Java的继承形式:

首先创建好了speak接口

public interface speak {
   
    void speak();
}

human类需要实现speak接口的话,需要使用implement关键字声明实现了该接口

public class human implements speak{
   
    @Override
    public void speak() {
   
        System.out.println("i can speak");
    }
}

非侵入式接口

具体类型实现接口不需要再语法上显式地声明,一个类只需要实现了接口中的所有函数,就可认为该类实现了这个接口,例如Go中的继承形式:

speak接口

type speak interface{
   
	speak()
}

human类实现speak接口

type human struct{
   
}

func (human) speak(){
   
	fmt.Println("i can speak")
}

转载:https://blog.csdn.net/bestzy6/article/details/115710694
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场