黑马程序员——OC学习——面向对象

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1. 实例变量修饰符——@public  @protected  @private

实例变量作用域

  • @public修饰的实例变量可以在任意程序集访问
  • @protected修饰的实例变量在当前类及其派生类中可以访问
  • @private修饰的实例变量只在当前类中可以访问
2. OC中的私有变量

在.m文件中定义的变量,私有变量只能在当前类中使用不能被子类继承也不能被子类使用,而@private修饰的实例变量可以被子类继承但是不能被子类使用

3. OC中私有方法

在.h文件中没有声明但是在.m文件中实现的方法是OC中的私有方法,父类的私有方法不能被子类继承,通过关键字self访问私有方法

示例代码如下;

#import <Foundation/Foundation.h>
//类的声明
@interface Car:NSObject
-(void)test;
@end
//类的实现
@implementation Car
//定义一个私有方法
-(void)run{
    NSLog(@"车在跑");
}
-(void)test{
    //使用self调用私有方法
    [self run];
}

@end
//main方法
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Car *car=[Car new];
        //通过调用类对外公开的方法调用私有方法
        [car test];
    }
    return 0;
}


4. description方法介绍

以%@打印一个对象时调用了一个对象的description方法,打印结果是<类名 对象地址>

以%@打印一个类对象时,调用的是类的description方法,打印出类的信息

示例代码如下:

#import <Foundation/Foundation.h>
#import "Dog.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Dog *d=[Dog new];
        //调用对象的description方法打印一个对象
        NSLog(@"%@",d);
        //调用类的description方法打印类的信息
        NSLog(@"%@",[d class]);
    }
    return 0;
}

5. 类的本质

类的本质也是一个对象,类对象代表类,class代表类对象,类方法属于类对象。

eg: Person *p=[Person new]; Person是一个类对象,是class类型,p是一个类类型的变量,是一个实例变量

获取类对象的方法:

  • 通过实例对象获取   eg:Dog *dog=[Dog new];  Class d1=[dog class];
  • 通过类名获取          eg:Dog *dog=[Dog new];  Class d2=[Dog class];
类对象的使用

使用类对象创建对象:Dog *dog1=[d1 new];

调用类方法:[d1 run];


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值