self和super

self和super

  • super和self指向是同一个对象
  • 对象的初始化(NSobject)类中就有init方法可以不用声明 直接实现
- (id)init {
     self = [super init] ;//初始化父类对象
     if (self) {
         //初始化
     }
     return self ;
 }

self
  • self表示当前方法的调用者
  • 在类方法中self表示类 在对象方法中self表示对象
  • self是方法隐藏的参数变量,指向当前调用方法的对象
super
  • super在类中的方法代替父类,用来调用父类
  • super不是隐藏的参数,他只是一个编译器指示符,查找方法时,指定方法查找的位置在父类
#import <Foundation/Foundation.h>
//声明一个People类 NSobject为父类
@interface People : NSObject

@end

//实现一个People类 
@implementation People
//初始化
- (id)init {
    self = [super init] ; //super调用NSobject父类 因为NSobject中有init方法所有可以不用在声明部分声明
    if ( self ) {
        NSLog(@"*******") ;
    }
    return self ;
}

@end
//声明一个Student类 继承People类
@interface Student : People

@end
//实现一个Student类
@implementation Student
//初始化
- (id)init {
    self = [super init] ;
    if ( self ) {
        NSLog(@"#######") ;
    }
    return self ;
}

@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        People *peo = [[People alloc]init];
        
        Student *stu = [[Student alloc]init];
        
    }
    return 0;
}
程序运行结果
*******//程序运行先执行创建的People类 输出*
*******//在执行Student类时,因为它继承People,先调用父类 输出*
#######//再输出#


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值