OC学习

OC学习2

1.Student.h

#import <Foundation/Foundation.h>


@interface Student : NSObject

{

    NSString *_sID;//全局变量

}


@property (nonatomic,strong)NSString *name;


@property (nonatomic,assign)NSInteger age;


-(id)initWithName:(NSString *)name Age:(NSInteger)age;//自定义初始化方法


//便利构造器

//+号后面的括号的内容为当前类的类型,如当前类为Student,继承于系统类NSObject

+(Student *)studentWithName:(NSString *)name Age:(NSInteger)age;


-(void)sayHello;

@end


2.Student.m

#import "Student.h"


@implementation Student


-(void)setName:(NSString *)name{

    _name = name;

}


-(id)initWithName:(NSString *)name Age:(NSInteger)age{

    if (self = [super init]) {

        self.name = name;

        self.age = age;

        [self sayHello];

    }

    return self;

}


//便利构造器,相当于在类的里面再写一个跟类无关的方法

+(Student *)studentWithName:(NSString *)name Age:(NSInteger)age{

    //在类中用类本身自带的初始化方法来构造对象,然后将对象当作返回值抛出.

    

//    _sID = @"ss";

//    self.name = @"ff";

//    [self sayHello];

    

    Student *st = [[Student alloc] initWithName:name Age:age];

    return st;

    

    /*

        在类的内部,对于静态来讲:

            1.它不能访问类的实例变

            2.不用self调用类自带方法和属性

     */

}

/*

 1.根据需要创建便利构造器

 2.根据需要来创建便利构造器相对应的方法

 */


-(void)sayHello{

    NSLog(@"Hello");

}

@end


3.main.m

#import <Foundation/Foundation.h>

#import "Student.h"


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

{


    @autoreleasepool {

        

        /*

         面向对象和面向过程的概念?

         

         类和对象的概念?

         

         如何用OC创建一个类?

         

         类是由属性和方法组成的.(属性即实例变量)

         实例变量(类的全局受保护的变量)

         

         设置器和访问器

         作用:

         1.

         2.

         3.

         缺点:太繁杂

         

         由于以上...,所以有@property@synthesize

         @property相当于设置器和访问器的声明

         @synthesize相当于设置器和访问器的实现,可省略不写

         

         对于类来说:

         1.初始化方法,系统的

         -(init){

            if(self = [super init]){

                ...

            }

         }

         2.自定义初始化方法

         -(id)initWith:(NSString *)name;

         

         3.便利构造器 (初始化方法)

            在外界构造类的对象时,开发者不需要关心其生命周期

         

         OC中方法

         静态方法 (类方法) 标识:+

         实例方法         标识:-

         

         在类的外边调用

         对于类方法来说,它调用方式是用类来调用.

         对于实例方法来说,它调用方式是用对象来调用.

         

         */


        

        Student *st = [Student studentWithName:@"XXX" Age:21];

        

        Student *st1 = [Student alloc];

        st1 = [st1 initWithName:@"ibokan" Age:7];

        

    }

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值