类和对象

Demo

main.m文件

#import <Foundation/Foundation.h>

#import "Wangyuyan.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //1.OC类的对象只能在堆上分配


/*        wangyuyan *wyy;//wangyuyan是类名, *wyy是对象

        //2.alloc:在堆上创建一个对象

        wyy = [wangyuyan alloc];//malloc

        //3.init:初始化对象,对象没有被初始化时,不能使用

        [wyy init];

        上两句可并成一句wyy = [[wangyuyan alloc] init];

        //4.new:创建并初始化

        或wyy = [wangyuyan new];

 */

        Wangyuyan *wyy = [Wangyuyan new];

        wyy->name = @"王语嫣";

        NSLog(@"%@",wyy->name);

        [wyy eat];

        [wyy dance:@"I don't know" count:10];


        //类方法只能通过类名进行调用

// 例       [Wangyuyan test];//+

        //实例方法只能通过一个具体的对象进行调用

// 例       [wyy eat];//-

        NSLog(@"------1-----");


        //隐含参数self,_cmd

        //self表示调用这个方法的对象

        Wangyuyan *wyy1 = [Wangyuyan new];

        NSLog(@"1. %p",wyy1);//与[wyy1 run];等同

        [wyy1 run];//堆,初始化为0

        //实例方法是与对象同时存在

        //实例变量存在于具体的对象中

        //实例变量,成员变量

        wyy1->_age = 19;

        NSLog(@"4. %d",wyy1->_age);


        NSLog(@"-----2------");


        Wangyuyan *wyy2 = [Wangyuyan new];

        NSLog(@"1. %p",wyy2);

        [wyy2 run];

        wyy2->_age = 20;

        NSLog(@"4. %d",wyy2->_age);


        NSLog(@"-----3------");

        [Wangyuyan test];//+


    }

    return 0;

}
//1.OC类的对象只能在堆上分配
/*       
        wangyuyan *wyy;//wangyuyan是类名, *wyy是对象
        //2.alloc:在堆上创建一个对象
        wyy = [wangyuyan alloc];//malloc
        //3.init:初始化对象,对象没有被初始化时,不能使用
        [wyy init];
        上两句可并成一句wyy = [[wangyuyan alloc] init];
        //4.new:创建并初始化
        或wyy = [wangyuyan new];

 */

        Wangyuyan *wyy = [Wangyuyan new];
        //类方法只能通过类名进行调用

// 例       [Wangyuyan test];//+

        //实例方法只能通过一个具体的对象进行调用

// 例       [wyy eat];//-

Wangyuyan.h文件

#import <Foundation/Foundation.h>

@interface Wangyuyan : NSObject//NSObject父类,固定写法

{//描述对象的状态,实例变量

 //   int age1;       //不能随便赋值

@public     //任意地方访问

    int _age;

    NSString *name;

    char dender;

@protected  //当前类或派生类,默认是

    float score;

@private    //当前类

    float money;

}

//方法,描述对象的能力(行为)

- (void)eat;

//方法名后面有参数必须带有":"号

- (void)dance:(NSString *)n count:(int)count;

- (void):(NSString *)n;//不好的习惯,没有方法名

- (void)run;

+ (void)test;

@end

Wangyuyan.m文件

#import "Wangyuyan.h"

@implementation Wangyuyan

{//作用域仅限于当前的实现

    float mm;//@implementation wangyuyan中只能在最前面定义变量

}

- (void)eat{

    //NSLog(@"Wangyuyan eat");

    NSLog(@"%s",__PRETTY_FUNCTION__);

}

- (void)dance:(NSString *)n count:(int)count {

    NSLog(@"%s %@: %d",__func__, n, count);

}


//隐含参数self,_cmd

//self表示调用这个方法的对象

- (void)run {

    NSLog(@"2. %p",self);

    //实例变量,隐含了一个self

    //实例变量可以在该类多所有实例方法中使用

    //实例变量不能直接在类方法中使用

    NSLog(@"3. self->_age:_age%d: %d",self->_age,_age);//self->_age和_age是指的一样的东西。堆,初始化为0

}

+(void)test{

    Wangyuyan *w = [Wangyuyan new];

    //w->_age = 22;

    NSLog(@"%d",w->_age);//堆,初始化为0

}

@end

输出:

2015-08-03 21:32:28.888 wangyuyan[1587:64727] 王语嫣
2015-08-03 21:32:28.889 wangyuyan[1587:64727] -[Wangyuyan eat]
2015-08-03 21:32:28.890 wangyuyan[1587:64727] -[Wangyuyan dance:count:] I don’t know: 10
2015-08-03 21:32:28.890 wangyuyan[1587:64727] ——1—–

2015-08-03 21:32:28.890 wangyuyan[1587:64727] 1. 0x100604f60
2015-08-03 21:32:28.891 wangyuyan[1587:64727] 2. 0x100604f60
2015-08-03 21:32:28.891 wangyuyan[1587:64727] 3. self->_age:_age0: 0
2015-08-03 21:32:28.892 wangyuyan[1587:64727] 4. 19
2015-08-03 21:32:28.892 wangyuyan[1587:64727] —–2——

2015-08-03 21:32:28.892 wangyuyan[1587:64727] 1. 0x100605090
2015-08-03 21:32:28.892 wangyuyan[1587:64727] 2. 0x100605090
2015-08-03 21:32:28.892 wangyuyan[1587:64727] 3. self->_age:_age0: 0
2015-08-03 21:32:28.892 wangyuyan[1587:64727] 4. 20
2015-08-03 21:32:28.892 wangyuyan[1587:64727] —–3——

2015-08-03 21:32:28.894 wangyuyan[1587:64727] 0

要点:

1.类方法和实例方法的调用
Wangyuyan *wyy = [Wangyuyan new];
//类方法只能通过类名进行调用
[Wangyuyan test];//+
//实例方法只能通过一个具体的对象进行调用
[wyy eat];//-
2.隐含参数self,_cmd

self表示调用这个方法的对象

3.实例方法和实例变量

实例方法是与对象同时存在
实例变量存在于具体的对象中
实例变量,隐含了一个self
实例变量可以在该类多所有实例方法中使用
实例变量不能直接在类方法中使用

4.访问控制权限

1).默认是@protected
2).@public 公开的,在任何位置都能访问
3).@protected 在类本身以及它的子类可以访问,但是类外面不能访问
4).@private 只能在当前类(定义该变量的类)中使用

5.关于命名:驼峰命名法

1).类名,首字母大写
2).变量名,首字母小写
3).方法名,首字母小写
4).实例变量名,用下划线开头(_)
5).考虑在类名前加上前缀(公司/项目名的首字母缩写)
6).尽量用完整的单词起名

6.局部变量,全局变量,静态变量的默认初始化值

1).局部变量:没有默认初始化
2).全局变量以及静态变量(static):系统自动初始化为零值

7.内存空间的分配

1).局部变量在栈上分配
2).类的对象只能在堆上分配
PS:所有名字在大括号中定义的空间都是栈空间(static修饰的除外)

8.子类会继承(具备)父类所有的功能

另:变量是一片内存区域的名字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值