[关闭]
@fiy-fish 2015-07-18T19:28:54.000000Z 字数 1497 阅读 1318

day06-03-继承

Objective-c


  1. // day06-03-继承
  2. //
  3. // Created by Aaron on 15/7/8.
  4. // Copyright (c) 2015年 Aaron. All rights reserved.
  5. //
  6. #import <Foundation/Foundation.h>
  7. //继承
  8. //继承是指从父类获得属性和方法
  9. //父类
  10. //父类是将所有的子类的公有特征综合起来
  11. //super class father class
  12. //子类,也被叫做派生类
  13. //子类除了会继承父类的特征,还可以派生出自己独有的特征
  14. //sub class child class
  15. #import "Student.h"
  16. int main(int argc, const char * argv[]) {
  17. @autoreleasepool {
  18. Student *std = [[Student alloc] initWithName:@"xiaobai" withAge:10];
  19. //子类继承父类 会将父类的方法继承过来
  20. NSString *name = [std name];
  21. //父类的属性 子类也会继承过来
  22. //NSLog(@"%@",name);
  23. [std eat];
  24. [Student test1];
  25. //父类里面不提供接口的方法,子类无法直接访问
  26. //[std setScore:100];
  27. //子类可以在父类的特征基础上添加自己的独有的属性
  28. //子类可以添加自己的方法
  29. //当父类的方法在子类里面不再适用的时候,需要重写
  30. }
  31. return 0;
  32. }
  33. //继承的作用: 当要创建大量的相似的类的时候,可以使用继承

  1. #import "Person.h"
  2. @interface Student : Person
  3. {
  4. //在子类里面还可以产生自己独有的属性和方法
  5. NSInteger _score;
  6. }
  7. -(NSString *)name;
  8. -(void)setScore:(NSInteger)score;
  9. @end

  1. #import "Student.h"
  2. @implementation Student
  3. -(NSString *)name
  4. {
  5. return _name;
  6. }
  7. -(void)setScore:(NSInteger)score
  8. {
  9. if(_score != score)
  10. {
  11. _score = score;
  12. }
  13. NSLog(@"%ld",_score);
  14. }
  15. //重写父类方法的时候,不需要再提供接口
  16. -(void)eat
  17. {
  18. NSLog(@"用筷子挑食物");
  19. //在重写的时候,很多时候需要利用到父类的流程
  20. //仅仅是在原有的流程上添加一些操作
  21. [super eat];
  22. }
  23. @end

  1. #import <Foundation/Foundation.h>
  2. @interface Person : NSObject
  3. {
  4. NSString *_name;
  5. NSInteger _age;
  6. }
  7. -(instancetype)initWithName:(NSString *)name withAge:(NSInteger)age;
  8. -(void)eat;
  9. +(void)test1;
  10. @end

  1. #import "Person.h"
  2. @implementation Person
  3. -(instancetype)initWithName:(NSString *)name withAge:(NSInteger)age
  4. {
  5. if(self = [super init])
  6. {
  7. _name = name;
  8. _age = age;
  9. }
  10. return self;
  11. }
  12. -(void)eat
  13. {
  14. NSLog(@"张开嘴");
  15. NSLog(@"嚼");
  16. //[self test2];
  17. }
  18. -(void)test2
  19. {
  20. NSLog(@"test2");
  21. }
  22. +(void)test1
  23. {
  24. NSLog(@"test1");
  25. }
  26. @end

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注