OC 继承
//
// woman.h
#import <Foundation/Foundation.h>
@interface woman : NSObject{
NSString *_name;
NSString *_hobby;
int _tui;
int _age;
}
//方法
-(void)eat;
-(void)shopping;
-(void)play;
//get (取值) set(赋值)
//set方法写法
-(void)setName:(NSString *)name;
-(NSString *)name;
-(void)setHobby:(NSString *)hobby;
-(NSString *)hobby;
-(void)setTui:(int)tui;
-(int)tui;
-(void)setAge:(int)age;
-(int)age;
-(instancetype)initWithName:(NSString *)name
hobby:(NSString *)hobby
tui:(int)tui
age:(int)age;
//便利构造器
+(woman *)womanWithName:(NSString *)name
hobby:(NSString *)hobby
tui:(int)tui
age:(int)age;
@end
//
// woman.m
#import "woman.h"
@implementation woman
-(instancetype)initWithName:(NSString *)name
hobby:(NSString *)hobby
tui:(int)tui
age:(int)age{
self=[super init];
if (self) {
_name=name;
_hobby=hobby;
_tui=tui;
_age=age;
}
return self;
}
//便利构造器
+(woman *)womanWithName:(NSString *)name
hobby:(NSString *)hobby
tui:(int)tui
age:(int)age{
woman *w=[[woman alloc]initWithName:name hobby:hobby tui:tui age:age];
return w;
}
-(void)eat{
NSLog(@"吃好吃的~~");
}
-(void)shopping{
NSLog(@"买好的~~");
}
-(void)play{
NSLog(@"玩好玩的");
}
-(void)setName:(NSString *)name{
_name=name;
}
-(NSString *)name{
return _name;
}
-(void)setHobby:(NSString *)hobby{
_hobby=hobby;
}
-(NSString *)hobby{
return _hobby;
}
-(void)setTui:(int)tui{
_tui=tui;
}
-(int)tui{
return _tui;
}
-(void)setAge:(int)age{
_age=age;
}
-(int)age{
return _age;
}
@end
/*
继承:
继承优势:就是省代码,提高开发效率,增强程序的可扩展性和可修改性
1,继承的上层(父类)superclass 继承的下层(子类)subclass
2.继承具有单向性,如果a作为b的父类,则a就不能在成为b的子类
3.继承具有传递性 (如果c继承b b继承于a 则 c就具有a 和b 的所有内容)
4.子类继承 父类的全部实例变量以及方法
5.子类从父类继承过来的内容就是子类自己的,只不过这个内容来源于父类自己
原则:当多个类中出现部分相同的特征和行为,可以将相同部分写成一个父类,其他类继承.
*/
[super eat];//它是一个编译器指令,获取父类里面对test方法的实现
//[self eat];//调用子类自己的方法,(就是重写之后父类的方法),如果子类没有那么就直接找到父类的方法
//self->它是'自己",一般情况下载+号方法中代表的是 类,在-号中代表的是对象