码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C学习笔记______类和对象的使用

时间:2015-05-30 14:48:41      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

//
//  main.m
//  类和对象
//
//  Created by apple on 15/5/30.
//  Copyright (c) 2015年 apple. All rights reserved.
//
#import <Foundation/Foundation.h>

@interface Computer : NSObject          //定义电脑这么一个类
{
    @public NSString *namec;            //定义一个NSString类型名为namec的指针,用于指向一个字符串
}
- (id) init:(NSString *)name;           //定义一个初始化函数
- (void) open;                          //定义一个开机函数
- (void) close;                         //顶一个关机函数
@end

@interface Person : NSObject            //定义人这么一个类
{
@public NSString *namep;
@public int age;
}
- (id) init:(NSString *)name:(int)age;  //定义初始化函数,参数为指针型的name和int型的age
- (void) introduce;                     //定义一个自我介绍的函数
- (void) study:(Computer *)computer;
@end

@implementation Person                      //将上面定义的人这个类实现
- (id) init:(NSString *)name:(int)newage{    //按格式将初始化函数复写
    self = [super init];
    if(self){
        namep = name;                       // 将形参name的值赋给类的namep字段
        age = newage;                       // 将形参newage的值赋给类的age字段
    }
    return self;
}

- (void) introduce{                          //将自我介绍函数复写
    NSLog(@"my name is %s im %d years old",namep,age);     //NSLog输出格式NSLog(@“输出内容”,参数)类似printf
}

- (void) study:(Computer *)computer{        //这里的Computer *是定义一个对象的引用,而不是指针
    [computer open];
    NSLog(@"i am studing");
    [computer close];                       //调用computer对象的close方法
}
@end

@implementation Computer             //将电脑这个类实现
- (id) init:(NSString *)name{
    self = [super init];
    if(self){
        namec = name;
    }
    return self;
}

- (void) open{
    NSLog(@"%@ have turn on !",namec);
}

- (void) close{
    NSLog(@"%@ have be shutdown !",namec);
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"apple");
    }
    Person *zhangxueyou = [[Person alloc] init:@"zhangxueyou":21];    //1
    Computer *apple = [[Computer alloc] init:@"apple"];        //2
    [zhangxueyou introduce];                     //对象张学友执行introduce这个方法
    [zhangxueyou study:apple];                   //对象张学友执行study这个方法,study用的是apple这台电脑
    return 0;
}

上面程序中注释为‘ 1 ’

那一行的意思是:[Person alloc]生成一个对象,并且这个对象执行后面的初始化函数init:@“zhangxueyou”:21,通过初始化函数把名字 zhangxueyou年龄21赋给这个对象,最后将创建好的对象赋给前面创建的引用zhangxueyou

注释为‘ 2 ’的那行代码意思同‘1’

 

最后顺便提一下NSLog(NSString *format,参量列表)跟printf(“格式化字符串”,参量列表)的区别:

  NSLog完全具备printf的功能,而printf只能打印纯C语言的变量,不能打印一些NSObject类型的对象,NSLog

  1.NSLog会自己加上换行符

  2.NSLog在Debug下会写到system.log中

  3.NSLog会自动加上时间和进程信息.

  4.NSLog支持%@去打印一个对象类型,当使用%@时,它会给对象发送消息description,所以如果你组合了一个新的类,你可以通过给自己重载description来实现打印DBUG信息

Objective-C学习笔记______类和对象的使用

标签:

原文地址:http://www.cnblogs.com/ITLiu/p/4540279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!