美文网首页
类与对象

类与对象

作者: Maxmin | 来源:发表于2016-01-08 20:54 被阅读61次

类型系统

  • 引用类型

    • 类 class
    • 指针 pointer
    • 块 block
  • 值类型 value type

    • 基础数值类型
    • 结构 struct
    • 枚举 enum
  • 类型装饰

    • 协议 protocol
    • 类别 category
    • 扩展 extension

类 class VS. 结构 struct

  • 类型与实例

    • 类与对象
    • 结构与值
  • 类——引用类型

    • 位于栈上的指针(引用)
    • 位于堆上的实体对象
  • 结构——值类型

    • 实例直接位于栈中
  • 空间分析

    • 运行时内存图

RPoint.h 接口

@interface RPoint: NSObject
/// 接口,继承自NSObject

@property int x;//状态
@property int y;
/// 属性,里面放了一些数据程艳

-(void)print;//行为
///方法,简单来说就是类内的函数

@end

类:

RPoint.h 实现

#import<Foundation/Foundation.h>
#import "rpoint.h"

@implementation RPoint

-(void)print{
  NSLog(@"[%d,%d]",self.x,self.y);//self就是当前的实例
}

@end

在程序中

//创建对象
RPoint *rp1[[RPoint alloc] init];//对象都以指针形式存在,先进行动态内存分配,alloc是向系统请求内存分配,init进行初始化。

rp1.x=10;
rp1.y=20;
[rp1 print];//调用方法

结构

定义一个结构SPoint.h

typedef struct{
  int x;
  int y;
}Spoint;

结构中不能再加入方法。

在程序中创建一个结构的实例

Spoint sp1;
sp1.x=10;
sp1.y=20;

对象的空间分析

对象的空间分析.png

值的空间分析

值的空间分析

栈和堆的区别

栈和堆.png

在程序中行为上的区别

拷贝

RPoint *rp2=rp1;
rp2.x++;
rp2.y++;

[rp1 print];
[rp2 print];

Spoint sp2=sp1;
sp2.x++;
sp2.y++;
NSLog(@"[d%,d%]"sp1.x,sp1.y);
NSLog(@"[d%,d%]"sp2.x,sp2.y);

rp1和rp2同时被更改,而sp2的更改对sp1无影响


拷贝行为.png

相关文章

  • 类与对象(类与对象定义)

    类与对象的定义和使用 如果在程序之中要定义一个类可以使用class关键字完成,而定义的语法如下: 在这个类中只是定...

  • 函数类和对象区别

    类与类:行为不同 对象与对象:数据不同

  • python入门开发学习笔记之类与对象

    本节重点 掌握什么是类、什么是对象 掌握如何定义及使用类与对象 了解对类与对象之间的关系 类与对象的概念 类即类别...

  • 类对象与类的对象

    类对象(obj.getClass)描述的是类的代码信息,比如哪些属性、属性是什么类型、变量名是什么、哪些方法、方法...

  • python-高级、面向对象

    一、类与对象 二、类和对象

  • Java面向对象笔记

    类和对象 对象的概念 什么是面向对象 类 什么是对象的属性 什么是对象的方法 类与对象的关系/与区别 什么是对象 ...

  • 006-面向对象1

    面向过程与面向对象 开车问题 吃饭问题 做饭问题 类与对象 类的概念 对象的概念 练习: 区分类与对象 类的组成 ...

  • 三、元类对象的本质

    1. 元类对象结构。 与类对象的结构一样。 与类对象比较 2. 元类对象的获取。 通过object_getClas...

  • 格物致知iOS类与对象

    格物致知iOS类与对象 格物致知iOS类与对象

  • 类与对象

    类与对象是整个面向对象之中最为基础的组成单元;类是共性的集合,对象是个性的产物。所有的类都是用来描述出对象的结构,...

网友评论

      本文标题:类与对象

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