Go 面向对象概念

1. 对象

  - 任意简单的内置数据类型

  - 任意复杂的结构体

  - 表示具体的事物 / 抽象的规则 / 计划 / 事件 等.

2. 对象的状态

  - 用数值来描述, 如长方体的长和宽等.

3. 对象的操作

  - 用于改变对象的状态, 操作就是对象的行为.

  - GO语言中称为Method(方法), Method 就是在 函数(function) 前面增加了一个接收者(Receiver)对象. 将操作和对象关联起来了.

    - 定义:   func (recv receiver_type) methodName(args)(rets){}    Receiver 可以是: 内置类型/自定义类型/结构体/指针类型

    - 多个Method可以同名, 只要接收者不同, 就是不同的Method.(类似于重载吧)

    - Method可以访问接收者的字段, 而不需要将字段作为参数传入Method, 就像在struct中访问字段一样.

    - 普通类型作为Receiver,是值传递;  指针类型作为Receiver, 将传递引用.

package main

import (
    "fmt"
    "math"
)

type rect struct {
    width  int
    height int
}
type circle struct {
    radius float32
}

func (recv rect) area() int {
    return recv.width * recv.height
}
func (recv circle) area() float32 {
    return recv.radius * recv.radius * math.Pi
}
func main() {
    r1 := rect{4, 3}
    r2 := rect{30, 15}
    fmt.Println(r1.area(), r2.area())
    c := circle{5}
    fmt.Println(c.area())
}

  - Receiver

    - 匿名Receiver, 省略了receiver的名字(类型没有省,所以可以判断), 此时不能定义同名的方法(应该是会造成无法将操作和对象绑定).

   - Method 继承

    - go中可以通过匿名字段实现字段继承;  如果匿名字段实现了一个Method(或者说是这个Method的Receiver), 那么包含这个匿名字段的struct对象也能调用该Method.

    - 可以重写继承的方法, 对象会像处理匿名字段一样, 优先处理外部同名Method.

时间: 2024-12-14 14:49:41

Go 面向对象概念的相关文章

delphi 基础之二 面向对象概念初步

面向对象概念初步 1.类的定义 类的定义分两步:首先在类(单元)的接口(interface)部分说明这个方法.然后在实现部分(implementation)部分编写方法的实现代码. 定义: type 类名=class(父类名) 数据域说明;      //类内部使用变量/常量的声明; 方法说明首部; end; 实现代码: procedure 类名.方法(参数); 实现代码; end; 2.创建对象及对象成员的引用 创建对象分两步: 首先声明对象,语法格式为 var 类名;//此时对象名还只是个指

面向对象 概念理解

以下是在阅读<大话设计模式>的时候,感觉其中面向对象基础模块,讲解的通俗易懂的概念,提炼出来的概念. 2016-01-05 23:56:22 对象: 对象是一个自包含的实体,用一组可识别的特性和行为来标识 类: 就是具有相同的属性和功能的对象的抽象的集合 实例: 就是一个真实的对象 实例化: 就是创建对象的过程,使用new 关键字 构造方法(构造函数): 其实就是对类进行初始化,构造方法与类同名,没有返回值,也不需要void,在new时候调用 方法重载: 提供了创建同名的多个方法的能力,但这些

O-C相关-03:面向对象概念的具体介绍

1.面向对象的概念 面向对象(object-oriented ;简称: OO) 至今还没有统一的概念,我这里把它定义为:按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析.设计.实现软件的办法.通过面向对象的理念使计算机软件系统能与现实世界中的系统一一对应. 2.面向对象编程(Object Oriented Programming-OOP)是一种解决软件复用的设计和编程方法.这种方法把软件系统中相近相似的操作逻辑和操作应用数据.状态,以类的型式描述出来,以对象

python基础8之面向对象概念介绍

一丶概念 1.面向对象编程 OOP(Object-Oriented Programming)编程是利用"类"和"对象"来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容. 2.Class类 一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.在类中定义了这些对象的都具备的属性(variable

《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)

要知道什么是面向对象,你首先要有个对象吧,所以······没有对象的可以回家洗洗睡了· 好吧,前面是开玩笑,要说明什么是面向对象,我们还是先 例子: 小呆:"小傻,你今天早餐吃的什么?" 小傻:"吃的东西可多啦,有两片面包,一块鸡肉饼,几片菜叶子,一点沙拉酱,另外还喝了一杯可乐,一袋油炸土豆条" 小呆:"小傻,你四不四洒啊!你直接说你吃的鸡肉堡套餐不行么 - -" 小傻:"呃,好吧,我吃的这个鸡肉汉堡套餐" OK,从上面的例子

Java基础教程(4)--面向对象概念

??如果你之前从来没有使用过面向对象编程语言,那么在学习Java之前需要先理解几个有关面向对象编程的基本概念.这篇教程将会向你介绍对象.类.集成.接口和包的概念,以及这些概念是如何与现实世界相关联,并介绍这些概念在Java语言中的体现. 一.对象 ??对象将状态和行为绑定在一起,它可以被用来模拟你能列举出的现实世界中的任何实体.这一小节将会解释如何在对象中表示状态和行为,介绍封装的概念,并解释这种软件设计方式的好处. ??对象是理解面向对象技术的关键.环顾四周,你会发现许多现实世界中的对象:狗.

5.4 SAP ABAP 面向对象概念 - 多态 - 摘自 《SAP ABAP面向对象程序设计:原则、模式及实践》

<SAP ABAP面向对象程序设计:原则.模式及实践> https://book.douban.com/subject/30317853/ http://www.duokan.com/shop/tbt/book/179473 https://item.jd.com/12423999.html https://e.jd.com/30429611.html 5.4 多态 5.4.1 多态的概述 多态是一个生物学和化学中的专有名词,被面计算机科学家引用到面向对象的程序设计中. 我们用柯林斯英语词典看

Python 2019/7/24 面向对象概念 类和对象 对象初始化__init__ 绑定与非绑定

面向对象 (Object Oriented Programming,简称OOP) 1.什么是面向对象:面向对象编程是一种思想,它指导程序员如何编写出更好的程序.它的核心是对象,此时程序员从操作者变成了指挥者. 2.为什么使用面向对象编程:当今时代背景下,通常应用程序对扩展性和维护性要求都是非常高的,为什么?想想qq,微信,是不是不断的在添加新功能?,也就是说一款应用程序诞生后,都需要不断的更新维护. 3.面向对象优缺点: 优点:拓展性  灵活性 重用性     缺点: 程序的复杂度提高了   无

java - 基础 - 面向对象 - 概念

面向过程的编程思想: 解决事情的时候按照一定的过程(流程): 不利于复用,会产生冗余: 面向对象的编程思想: 模仿现实生活中的事物,对事物进行分析(属性,动作): 类 --- 对象 类:抽象笼统的概念,描述一类有相同特点行为的事物 对象:具体的个体 声明类: import java.util.*; public class Person{ public String name;//生命周期直到实例被销毁. //修饰符 数据类型 变量名 可以直接赋值private String name = "a

面向对象——概念(成员变量、静态变量、成员方法、静态方法、垃圾回收机制、重载、包)

静态变量和成员变量的区别: 1.成员变量描述的是对象的特征,包含在对象之中.不同的对象成员变量彼此独立.一个对象成员变量的改变,不会影响其他对象. 静态变量独立在对象之外,是所有对象共享的变量.静态变量改变后会影响所有对象. 2.成员变量只能通过对象.的方式访问.而静态变量,可以通过对象.的方式访问,也可以通过类名.的方式访问.所以静态变量也称为类变量 3.成员变量存放在堆空间中,静态变量存放在数据段中. 静态方法和成员方法的区别: 1.静态方法加载时机在对象之前,可以通过对象.和类名.的方式访