*************************
self:表示实例变量自己本身
super:表示父类变量本身
*********************/
super:表示父类变量本身
*********************/
/*
-(void)funA
{
_age=20;
NSLog(@"-:funA %d",_age);
[self funB]; //接着调用funB
}
-(void)funB
{
NSLog(@"-:funB %d",_age);
{
_age=20;
NSLog(@"-:funA %d",_age);
[self funB]; //接着调用funB
}
-(void)funB
{
NSLog(@"-:funB %d",_age);
[Student sayHello];//确定的 去 调用不确定的可以,反之不行
}
+(void)sayHello
{
// ——age=20、、这是错误的;类方法不能操作实例变量
// [self funA];error:类方法不能调用实例方法
NSLog(@"+:sayHello");
}
*****************************************
OC中的类分为.h和.m文件
.h文件只要做声明:成员变量,属性、方法
表示类的接口@interface
.m最为函数的实现部分;实现方法
@implementation
成员变量
*/
/** 面向对象的三大特性:
封装:隐藏内部实现,稳定外部接口
继承:子类复用父类的成员变量、属性、方法(重写)
表示类的接口@interface
.m最为函数的实现部分;实现方法
@implementation
成员变量
*/
/** 面向对象的三大特性:
封装:隐藏内部实现,稳定外部接口
继承:子类复用父类的成员变量、属性、方法(重写)
多态:父类指针(父类对象)指向子类空间
*/
************************************
@interface Student : NSObject
{
int _age;//全局变量 变量之前加_ 用来区别一些类属性
}
//实例方法
//-(void)
-(void)funA;
-(void)funB;
+(void)sayHello;
//类方法
//+(返回类型)方法名
@end
{
int _age;//全局变量 变量之前加_ 用来区别一些类属性
}
//实例方法
//-(void)
-(void)funA;
-(void)funB;
+(void)sayHello;
//类方法
//+(返回类型)方法名
@end
************************************
@propertyint age;// 代替下面两句话
@property NSString *name;
@property NSString *address;
/**
-(void)setAge:(int)Age;
-(int)getage;
-(void)setName:(NSString *)Aame;
-(NSString *)getname;
-(void)setAddress:(NSString *)Address;
-(NSString *)getaddress;
@property NSString *address;
/**
-(void)setAge:(int)Age;
-(int)getage;
-(void)setName:(NSString *)Aame;
-(NSString *)getname;
-(void)setAddress:(NSString *)Address;
-(NSString *)getaddress;
**/***********************************
构造方法 自定义构造方法
。h
@interface Student : NSObject
@property int age;
@property NSString *name,*address;
@property int age;
@property NSString *name,*address;
// 重写构造方法、初始化方法
-(instancetype)init;//(id)意义一样 初始化值时定义的是多少就是多少,无法在main函数里面修改 重写init父类里的方法
//自定义构造方法
//以init开头的都是构造方法,第二个单词首字母必须大写
-(instancetype)initWithAge:(int)age
andName:(NSString *)name
andAddress:(NSString *)address;
。m
// 1. 初始化方法:完成初始化信息、返回对象
-(instancetype)init
{
self=[super init]; //self在父类里
if (self)//if(self != nil);确定self在父类里才执行
{
self.age=10;
self.name=@"Tom";
self.address=@"China";
}
return self;//是谁调用,self就是谁
}
// 2. 自定义构造方法
-(instancetype)initWithAge:(int)age
andName:(NSString *)name
andAddress:(NSString *)address
{
self=[super init]; //self在父类里
if (self)//if(self != nil);确定self在父类里才执行
{
self.age=age;
self.name=name;
self.address=address;
}
-(instancetype)init
{
self=[super init]; //self在父类里
if (self)//if(self != nil);确定self在父类里才执行
{
self.age=10;
self.name=@"Tom";
self.address=@"China";
}
return self;//是谁调用,self就是谁
}
// 2. 自定义构造方法
-(instancetype)initWithAge:(int)age
andName:(NSString *)name
andAddress:(NSString *)address
{
self=[super init]; //self在父类里
if (self)//if(self != nil);确定self在父类里才执行
{
self.age=age;
self.name=name;
self.address=address;
}
return self;