OC笔记 - 类与对象

类的声明与实现

1、类必须有声明与实现
2、类名的单词首字母必须大写
3、定义属性名的时候,要用下划线开头(规范)

@interface 类名:NSObject
{
	类的属性(成员变量)
}
类的方法的声明
@end

@implementation 类名
	类的方法
@end

类的创建

类名 *变量名 = [类名 new]

类在第一次被访问的时候,会进行类加载,将类的代码存储在代码段中,之后再被访问的话不会再进行类加载。
我们创建的对象实际上是一个类指针,类指针存储在栈中,指向堆中所创建的类的空间,其中存储着类的成员变量,每一个对象都有一个isa的成员变量,指向在代码段中的类的代码。

定义类的位置

若类与执行的位置在同一个文件中,类要定义在前
若定义在不同的文件中,使用#import “文件名”
但大部分情况下,类都是要单独定义在其他文件的。
oc的文件分为.m 与.h
.h一般用来存放类的声明部分
.m一般用来存放类的实现部分
可以直接通过新建文件 cocoa Class直接同时创建.h 与.m文件

类方法的声明

1)对象方法的声明:
 	- (返回值类型)方法名:
 对象方法要通过创建对象,通过对象名来调用
2)类方法的声明:
 	+ (返回值类型)方法名:
 类方法直接使用类名来调用

注意:
1.在类方法中,不能直接使用成员变量
成员对象是在对象创建的时候,与对象一起创建,此时还没有成员变量
2.在类方法中不能直接调用当前类的其他方法
3.对象方法中可以直接调用类方法
4.self是一个指针,可以在对象方法与类方法中使用。self在对象方法中指向当前对象,在类方法中指向当前类

类的成员变量与方法的使用

@interface Person:NSObject
{
    @public
    NSString *_name;
    int _age;
    int _weight;
}
//对象方法的声明
- (void)eat:(int)num;
- (void)run:(int)num;

//类方法的声明:创建Person的构造器
+ (instancetype)Person:(NSString*)name :(int)age :(int)weight;
@end

@implementation Person
//对象方法的实现
- (void)eat:(int)num{
    _weight = _weight + num;
}
- (void)run:(int)num{
    _weight = _weight - num;
}
//类方法的实现:创建Person的构造器
+ (instancetype)Person:(NSString*)name :(int)age :(int)weight
{
    Person *p = [Person new];
    p->_name = name;
    p->_age = age;
    p->_weight = weight;
    return p;
}

@end

int main(int argc, const char * argv[]) {
    Person *lll = [Person new];
    lll->_name = @"啦啦啦";
    lll->_age = 18;
    lll->_weight = 100;
    NSLog(@"%d",lll->_weight);
    [lll eat:100];
    [lll run:50];
    NSLog(@"%d",lll->_weight);
    Person *hhh = [Person Person:@"哈哈哈" :22 :150];//使用类方法创建对象
    NSLog(@"%@",hhh->_name);
	return 0;
}
``

	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值