第四天-继承

//
//  main.m
//  03-继承
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

#import "CZPerson.h"
#import "CZStudent.h"
/*
  OC中的继承机制是单继承的,一个子类只能有一个父类
  OC支持多层继承的,A 继承 NSObject,B继承A这就称为多层继承
 
  在继承体系中方法调用的顺序
 
  1、在自己类中找
  2、如果没有,去父类中找
  3、如果父类中没有,就去父类的父类中
  4、如果父类的父类也没有,就还往上找,直到找到基类(NSObject)
  5、如果NSObject都没有就报错了
 
 
 
 */
int main(int argc, const char * argv[]) {
  
    CZPerson *p  =  [CZPerson new];
//    [p eat];
    
    
    
    
    
    CZStudent *stu = [CZStudent new];
    [stu setAge:10];
    [stu setName:@"小明"];
    [stu eat];
//    [stu show];
    
//       p.age;
    
    
    return 0;
}

//
//  CZPerson.h
//  1121-知识点的回顾
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>
//只有继承NSObject那么这个对象才有创建对象能力
//NSObject是大部分类的基类(根类 root class),
/*
  当 A 类 继承 B类,那么A类就拥有B类中所有成员变量和方法
  1、继承好处:代码重用
  2、继承缺点:父类的改变影响所有的子类,子类与父类的耦合度很高
 
  A类 继承 B类目的就是为了使用B类中的成员变量和方法
  使用场景:
  当我们发现一个类是另外一个类的时候就可以使用继承,例如学生是一个人,那么这个时候定义学生类的时候,就可以让学生继承人类
 
 
  3、当子类中不想使用父类的方法,那么把父类的方法覆盖掉
 
 */

@interface CZPerson : NSObject
{
    int _age;//年龄
    NSString * _name;//姓名
}

- (void) setAge:(int) age;

- (int) age;


- (void) setName:(NSString *) name;

- (NSString *) name;


- (void) eat;

@end

//
//  CZPerson.m
//  1121-知识点的回顾
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "CZPerson.h"

@implementation CZPerson

- (void) setAge:(int) age
{
    _age = age;
}

- (int) age
{
    return _age;
}


- (void) setName:(NSString *) name
{
    _name = name;
}

- (NSString *) name
{
    return _name;
}


- (void) eat
{
    NSLog(@"CZPerson 吃");
}
@end

//
//  CZStudent.h
//  1121-知识点的回顾
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "CZPerson.h"

@interface CZStudent : CZPerson

-(void) show;

@end

//
//  CZStudent.m
//  1121-知识点的回顾
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "CZStudent.h"
/**
  由于CZStudent继承了CZPerson那么它就拥有了CZPerson的所有成员变量和方法
 
  OC只有实现没有声明的方法是私有方法,不能在外边直接访问,但是它不是绝对私有

 */
@implementation CZStudent

-(void) show
{
    NSLog(@"age = %d,name = %@",_age,_name);
}

- (void) eat
{
    NSLog(@"CZStudent eat");
}

@end


你可能感兴趣的:(第四天-继承)