基本介绍

Golang仍然有面向对象编程的继承、封装、多态三大特性,只是实现方式和其它OOP语言不一样
面向对象编程思想——抽象,实际上就是把一类事物的共有属性(字段)和行为(方法)提取出来,形成一个物理模型(模板),这种研究问题的方法成为抽象。
多态是通过接口来体现的

面向对象编程思想——抽象

image.png

代码

  1. package main
  2. import "fmt"
  3. // 定义一个 Account 结构体
  4. type Account struct {
  5. AccountNo string
  6. Pwd string
  7. Balance float64
  8. }
  9. // 绑定方法
  10. // 1. 存款
  11. func (account *Account) Deposite(money float64, pwd string) {
  12. // 判断输入的密码是否正确
  13. if pwd != account.Pwd {
  14. fmt.Println("您输入的密码不正确")
  15. return
  16. }
  17. // 校验金额
  18. if money < 0 {
  19. fmt.Println("金额不正确")
  20. return
  21. }
  22. account.Balance += money
  23. fmt.Printf("存款成功,交易后余额: %v \n", account.Balance)
  24. }
  25. // 2.取款
  26. func (account *Account) WithDraw(money float64, pwd string) {
  27. // 判断输入的密码是否正确
  28. if pwd != account.Pwd {
  29. fmt.Println("您输入的密码不正确")
  30. return
  31. }
  32. // 校验金额
  33. if money < 0 || money > account.Balance {
  34. fmt.Println("金额不正确")
  35. return
  36. }
  37. account.Balance -= money
  38. fmt.Printf("取款成功,交易后余额: %v \n", account.Balance)
  39. }
  40. // 2.查询余额
  41. func (account *Account) Query(pwd string) {
  42. // 判断输入的密码是否正确
  43. if pwd != account.Pwd {
  44. fmt.Println("您输入的密码不正确")
  45. return
  46. }
  47. fmt.Printf("你的账号:%v, 余额: %v \n", account.AccountNo, account.Balance)
  48. }
  49. func main() {
  50. account := Account{
  51. AccountNo: "gs123456",
  52. Pwd: "666666",
  53. Balance: 100.0,
  54. }
  55. // 查询余额
  56. account.Query("666666")
  57. // 存款
  58. account.Deposite(100.2, "666666")
  59. // 取款
  60. account.WithDraw(50, "666666")
  61. }