美文网首页
15.Go语言·面向对象编程应用·接口(二)

15.Go语言·面向对象编程应用·接口(二)

作者: 一枼落知天下 | 来源:发表于2019-06-06 14:01 被阅读0次

    main.go

    // Go语言·面向对象编程应用·接口
    package main
    
    //  包的本质是创建不同的文件夹
    //  go的每一个文件都是属于一个包的
    //  go以包的形式管理项目和文件目录。
    //  import "包的路径"
    import (
        // model "day23/model"
        "fmt"
    )
    
    var content string = `
    ————————————————Go语言·面向对象编程应用·接口————————————————————
    一、接口 interface
           interface 类型可以定义一组方法,这些方法不需要实现。并且interface不能
        包含任何变量,到某个自定义类型要使用的时候,在根据具体情况把这些方法写出
        来(实现)。
        接口里的所有方法都没有方法体。
    
    
        程序设计思想:多态和高内聚低耦合
        type 接口名 interface {
            methodName01(参数列表) 返回列表
            methodName02(参数列表) 返回列表
        }
        不需要显示的实现。只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口。
    二、接口注意事项:
        1.接口本身不能创建实例,但是可以指向一个实现咯该接口的
        自定义类型的变量(实例)
        2.接口里的所有方法都没有方法体。
        3.一个自定义类型需要将接口的所有方法都实现————自定义类型实现咯该接口
        4.一个自定义类型只有实现咯某个接口,才能将该自定义类型的实例(变量)赋给接口类型
        5.只要是自定义数据类型,就可以实现接口,不一定是结构体类型。
            type Pay interface {
                Charge()
            }
    
            type Alibb struct {}
    
            // 实现接口的所有方法
            func (aly Alibb) Charge(){}
    
            var aly Alibb
            // 自定义类型的实例(变量)赋给接口类型
            var pay Pay = aly
    
            pay.Charge()
    
            // 只要是自定义数据类型,就可以实现接口,不一定是结构体类型。
            type integer int
    
            func (i integer) Charge() {}
    
            var num integer = 10
            var mpay Pay = num
            mpay.Charge()
        6.一个自定义类型,可以实现多个接口
        7.Golang接口中不能有任何变量
        8.一个接口(比如:A接口)可以继承多个别的接口(比如:B,C接口),此时要实现A接口,也
        必须将B,C接口的方法全部实现。(A,B,C接口方法全部实现)
        9.interface类型默认是一个指针(引用类型)如果没有对interface初始化就使用,就会输
        出nil
        10.空接口interface{}没有任何方法,所有类型都实现咯空接口,即可以把任何数据类型的变
        量赋给空接口。
    `
    
    type Pay interface {
        Charge()
    }
    
    type Order interface {
        CreateOrder()
    }
    
    type PaySystem interface {
        Pay
        Order
        Auth()
    }
    
    
    type Alibb struct {
    }
    
    // 实现接口的所有方法
    func (aly Alibb) Charge(){
        fmt.Println("Alibb 支付。。。")
    }
    
    func (aly Alibb) CreateOrder() {
        fmt.Println("订单号:","AliNo.00002")
    }
    
    func (aly Alibb) Auth() {
        fmt.Println("认证成功,可以继续操作!")
    }
    
    // 只要是自定义数据类型,就可以实现接口,不一定是结构体类型。
    type integer int
    func (i integer) Charge() {
        fmt.Println("你的充值金额:",i)
    }
    
    // 空接口
    type T interface {}     
    
    
    func main() {
        var aly Alibb
        // 自定义类型的实例(变量)赋给接口类型
        var pay PaySystem   = aly
        pay.Auth()
        pay.Charge()
        pay.CreateOrder()
    
        var num integer = 100
        var mpay Pay = num
        mpay.Charge()
    
        fmt.Println()
        var t1 interface{} = 100
        fmt.Println("空接口测试:",t1)
    
        var t2 T = [3]int{1,2,3}
        fmt.Println("空接口测试:",t2)
    }
    
    

    相关文章

      网友评论

          本文标题:15.Go语言·面向对象编程应用·接口(二)

          本文链接:https://www.haomeiwen.com/subject/joayxctx.html