java中的多态与golang中的多态
多态是面向对象编程的一个重要特征。它允许不同类型的对象对同一方法进行不同的实现。具体来说,多态性指的是通过父类的引用变量来引用子类的对象,从而实现对不同对象的统一操作。
java中多态通过继承实现,在go语言中,多态通过接口实现
java多态案例
package org.example; class Animal{ public void sound(){ System.out.println("动物发出叫声"); } } class Cat extends Animal{ @Override public void sound() { System.out.println("猫叫"); } } class Dog extends Animal{ @Override public void sound() { System.out.println("狗叫"); } } public class App { public static void main( String[] args ) { Animal cat = new Cat(); // 父类引用指向子类对象 Animal dog = new Dog(); // 父类引用指向子类对象 cat.sound(); dog.sound(); } }
运行结果:
go多态案例
go语言中,多态可以体现为多态参数和多态数组,例如:
package main import ( "fmt" ) type Usb interface{ Connect() DisConnect() } type Phone struct{ Name string } /* * Phone实现了Usb 接口(是指实现了Usb接口的所有方法) */ func(p Phone) Connect(){ fmt.Println("手机连接...") } func(p Phone) DisConnect(){ fmt.Println("手机断开连接...") } type Camera struct{ Name string } func(c Camera) Connect(){ fmt.Println("相机连接...") } func(c Camera) DisConnect(){ fmt.Println("相机断开连接...") } type Computer struct{ } func(c Computer) Working(u Usb){ // 这里就提现了一个多态的实现 (①里提现为多态参数) u.Connect() u.DisConnect() } func main(){ phone := Phone{"手机"} camera := Camera{"相机"} computer := Computer{} computer.Working(phone) computer.Working(camera) var ar [2]Usb // 多态数组的提现 ar 中放了两个不同的结构体 ar[0] = phone ar[1] = camera fmt.Println(ar) }
运行结果:
博客里大都是转载的内容,其目的主要用户知识的组织和管理。