黑马程序员——初入oc,关于类的声明与实现

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

    本博文是博主刚入oc时的一些疑惑的总结,博主喜欢一边敲代码,一边查询不懂的知识点,然后备注,以备日后查看,所以大部分会以代码形式呈现。整理到此,希望给各位初学看客提供一些方便!

Person类

Person.h

//.h:类的实例变量和方法声明

#import <Foundation/Foundation.h>
//@interface:类声明的关键字
//Person:类名
//NSObject:Person的父类
//NSObject:所有oc类的直接或间接的父类(宙斯<img alt="生气" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/mad.gif" />)
//冒号--->继承
//Person : NSObject:Person继承自NSObject
@interface Person : NSObject{
    //实例变量的声明(属性)
    /*
     *实例变量的访问控制属性
     @public:公共的
     1:类中的方法可以直接访问,类外通过对象可以直接访问
     2:子类中的方法可以直接访问,子类外的对象可以直接访问
     @private:私有
     1:类中的方法可以访问,类外通过对象不能直接访问
     2:子类中的方法不可以直接访问,子类外的对象不可以直接访问
     @protected:保护(默认)
     1:类中的方法可以访问,类外通过对象不能直接访问
     2:子类中的方法可以直接访问,子类外的对象不可以直接访问
     总结:访问范围@private<@protected<@public
     */
    int _age;//实例变量全部已下划线开头_
    NSString *_name;
}
//类中方法的声明
//oc中方法没有访问控制属性,默认全部都是共有的

/*
 *类中方法的种类
 * - :对象方法,该方法是通过对象来调用,对象方法中可以直接访问实例变量
 * + :类方法,该方法是通过类名来调用,类方法中不能够直接访问实例变量
 */

//不带参数的方法
//- :表示该方法是对象方法
//(void):函数的返回值
//总结:oc类中的方法,所有出现数据类型的地方都用小括号 (数据类型)
//方法名: run

- (void)run;

//带一个参数的方法
//- :表示该方法是对象方法
//(void):函数的返回值
//(NSString *)foodName:函数行参,(NSString *)是数据类型,foodName是行参名
//方法名: eat: (冒号也是方法名的一部分)
- (void)eat: (NSString *)foodName;

//多个参数的方法
//- :表示该方法是对象方法
//(void):函数的返回值
//(int)age (NSString *)name:函数参数,一个是整形一个是字符串
//方法名:descAge: andName:
//总结:冒号, 函数名的一部分:(数据类型)参数名,冒号的个数和函数行参的个数相同
- (void)descAge:(int)age andName:(NSString *)name;

@end

Person.m

//.m:类中方法的实现

#import "Person.h"
//@implementation:类方法实现的关键字
@implementation Person
//方法实现

- (void)run{
    NSLog(@"runing............");
}

- (void)eat:(NSString *)foodName{
    NSLog(@"eat food %@...........", foodName);//%@输出字符串
}

- (void)descAge:(int)age andName:(NSString *)name{
    NSLog(@"age is %d name is %@", age, name);
}

@end

main:

#import <Foundation/Foundation.h>
#import "Student.h"//包含该类的头文件

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

    @autoreleasepool {
#if 0
        //oc中所有的对象都是指针
        //oc中方法的调用: [对象名/类名 方法名:实参]
        //注意:alloc是类方法,init是对象方法,在student类中能够使用这两个方法的原因是继承NSObject类
        Student *std = [Student alloc];//alloc:在对堆上创建一个对象, alloc会返回在堆上开辟的空间首地址
        std = [std init];//init:对象初始化
#endif
#if 0
        Student *std = [Student new];//等价于alloc和init
#endif
        Student *std = [[Student alloc] init];//最常用的,创建了一个student类的对象
        NSLog(@"age is %d name is %@", [std age], [std name]);
        //通过对象调用setter方法
        [std setAge:18];
        [std setName:@"super man"];
        NSLog(@"age is %d name is %@", [std age], [std name]);//通过对象调用getter方法
    }
    return 0;
}


附oc关键字:

@interface@implementation@end

@public@protected@private@selector

@try@catch@throw@finally

@protocol@optional@required@class

@property@synthesize@dynamic

selfsuperid_cmd__block__strong__weak




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值