Objective-C 面向对象一

来源:互联网 发布:淘宝介入不小心撤销了 编辑:程序博客网 时间:2024/05/17 02:41

建一个类Student类:

<Student.h>文件   定义

@interface Student : NSObject{    @public    NSString *_name;       // @protected    NSInteger _age;       // @private    NSString *_hobby;    NSString *_address;        /*     属性的作用域     @public      公开的任何类的方法都可以访问     @protrcted   受保护的,只有类本身和子类可以访问     @private     私有的,只有类本身才能访问     */}//方法的声明/* 减号(—) 表明了该方法是实例方法。类方法则用加号(+)。 (书P23)括号中void 表示无返回值类型,其它类型 */-(void)sayHello;  //实例方法-(NSString *)eatLunch; //实例方法+(NSString *)playGame;  //类方法@end

<Student.m>文件   实现

#import "Student.h"//在 @implementation 与 @end 中实现接口文件声明的方法@implementation Student-(void)sayHello{    NSLog(@"Hello everybody!!!");   }-(NSString *)eatLunch{    if (_age < 18) {        return [NSString stringWithFormat:@"%@小姐,今晚有空吃饭吗?\n",_name];    }    else    {        return [NSString stringWithFormat:@"%@小姐,今晚我没空吃饭。\n",_name];    }}+(NSString *)playGame{    return [NSString stringWithFormat:@"I Like playing LOL!\n"];}@end

<main.m>调用

#import <Foundation/Foundation.h>#import "Student.h"//相当以一个声明文件@interface Teacher : NSObject{    @public    NSString *_name;}-(void)classBegin;@end@implementation Teacher-(void)classBegin{    NSLog(@"%@ say class begin!",_name);}@end/* 在OC中,我们是使用 #import指令来导入头文件的,  #import "header"  //导入自定义类的头文件。 #import <header>  //导入ios框架类库类的文件的。  Foundation框架是使用处理用户界面之下的层(layer)中的特性的。例如数据结构和通信 及机制。我们OC中的程序,都是以Foundation框架为基础的。  //作业:#include  与 #import的区别? //NSLog  与 printf 函数的区别? */int main(int argc, const char * argv[]) {    /*     自动释放池:     自动释放池技术提供了一种机制,可以让我们将对象的所有权释放,但是不会导致对象     马上被清理,例如用在一个方法返回一个对象中     有以下三中情况我们可能会用自动释放池技术     1.如果我们写的程序不是基于UI框架的,如命令工具     2.如果我们写的程序中有循环并产生大量临时对象     3.如果你并发第二个线程         通常我们不需要建立自己的自动释放池块,在OC中,以后需要在main函数中创建对象都在我们的autoreleasepool中创建,     让它来自动帮我们管理对象所有权的释放     */    @autoreleasepool {                      // NSLog()是系统提供的日志函数,用来在控制台打印出调用信息        NSLog(@"\nHello, World!\n");                /*         面向对象的特征个概念:         面向对象是现在主流的程序设计思想,面向对象是把构成问题的事物分解成各个对象,         然后协调各个对象之间的联系个通讯。建立对象之间的目的不是为了完成某一个步骤,         而是为了描述某个事物在整体解决问题的步骤中的行为                  其基本的思想是:使用类,对象,属性方法(函数)以及封装,继承和多态等概念来进行程序设计。                  */            //OC中常用的数据类型 前缀:NS        NSInteger age = 25;   //整型        NSUInteger age1 = 25;  //无符号整型        CGFloat source = 34.5;  //浮点型        NSRange range;  //表示范围作用  结构体        CGPoint point;        CGSize size;        NSRect rect;        NSString *string = @"My name is Rick";        char c = [string characterAtIndex:3];        NSLog(@"c = %c\n",c);                //OC里面没有多维数组,只有数组嵌套数组        NSArray *array = @[@1,@2,@3,@4];                NSDictionary *dictioanry = @{@"name":@"Rick",@"age":@25};                NSDate *date = [NSDate date];  //美国日期                NSData *data = [NSData data];  //二进制数据                // NSURL                       网址        // NSOperationQueue            线程        // NSThread                    线程        // dispatch_get_main_queue()   线程                /*         什么的类? 类是一组具有相同属性及行为的对象集合         在OC中,类是由接口(interface)和实现(implement)两部分组成                  .h 接口文件,用来实现属性的声明和方法的声明         .m 实现文件,用来实现属性个方法             什么是对象?  类的具体实现         */                /*         创建和使用对象         OC创建对象的语法:           类名  *对象名 = [[类名 alloc] init];         或者             类名  *对象名 = [类名 new];                  alloc 为对象动态分配内存地址,需要做内存管理,放在堆上面。需要做内存该类         init 在内存中填上初始值         */        Student *stu = [[Student alloc] init];        Student *stu1 = [Student alloc];        stu1 = [stu1 init];                        Student *stu2 = [Student new];                //如何给类中是属性赋值以及调用类中的方法        //属性赋值,通过 -> 给实例变量赋值                stu -> _name = @"小红";        stu -> _age = 15;        stu -> _address = @"@广东";        stu -> _hobby = @"@看书";                NSLog(@"stu -> _name = %@",stu -> _name);                [stu sayHello];        NSString *stuString = [stu eatLunch];        NSLog(@"stuString = %@",stuString);                    //手动创建一个类        Teacher *tea = [Teacher new];        tea -> _name = @"zyx";        [tea classBegin];        NSLog(@"%@",tea -> _name);                         }    return 0;}



0 0