A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Yip-Jun 中级黑马   /  2015-12-1 00:24  /  695 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.对象方法类方法
#import <Foundation/Foundation.h>
@interface Person : NSObject
{                                                   //  --->   如果类方法需要掉用实例变量 需要添加 @public
    int _age;
}
- (void)test1;
+ (void)test2;                                      // +(void)test2:(Person *)per;
@end

@implementation Person
- (void)test1
{
    NSLog(@"调用了test1方法");
}

+ (void)test2                                       //  +(void)test2:(Person *)per
{
    [self test1];                                   //  不能用类名去调用对象方法  --->  [per test1];
    NSLog(@"调用了test2方法-%d", _age);               //  per ->_age;
}
@end

int main()
{                                                   //      @autoreleasepool {
    Person *p = [Person new];
    [p test2];                                      //   --->   [p test1];
   
    [Person test1];                                 //   --->   [Person test2];
}                                                   //      加   " return 0;  }"

2.继承
#import <Foundation/Foundation.h>
@interface Dog : Animal
{
    int _age;
    double _height;
}

@end

@implementation Dog
- (void)test1
{
    NSLog(@"test1----");
    [super test2];                              //  不能自己调用自己
}
@end
/*                                              //  程序从上往下运行,Dog找不到父类Animal的定义,需调整顺序
@interface Animal : NSObject
{
    int _age;
    double _weight;
}
- (void)test1;
+ (void)test2;
@end

@implementation Animal
- (void)test1
{
    NSLog(@"test1----");
}
+ (void)test2
{
    NSLog(@"test2----");
}
@end
*/

1 个回复

倒序浏览
学习了,多谢了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马