ios学习记录 day17 OC 2
1.OC的方法:声明
- (返回值) 方法名;//使用对象去调用 实例方法
+(返回值) 方法名;//使用类调用 类方法
2.继承:super关键字的作用只有一个:用于子类中调用父类的方法
3.特殊方法:初始化方法
Student.h
#import
<Foundation/Foundation.h>
@interface Student :
NSObject
{
NSString * _name;
NSString * _sex;
int _age;
}
//方法列表
//方法结构
-/+ (返回值) 方法名;
- (void) study;
//-号方法:使用对象去调用
实例方法
//+号方法:使用类调用 类方法
+ (void)
sleep;
//1.带返回值的方法
- (NSString *) getName;
- (NSString *)
getSex;
- (int) getAge;
//2.带参数的方法
//
-/+(返回值类型)方法名:(参数类型)参数名;
- (void) eat:(NSString *)food;//一个参数
- (void)
fight:(NSString *)people;
- (void) black:(NSString
*)name;
//3.带多个参数
//-/+ (返回值类型)方法名:(参数类型)参数名
方法名:(参数类型)参数名;
//参数名不能一样 重复定义
- (void) kickAss:(NSString *)name1
withPeople:(NSString *)name2;
- (NSString *) play:(NSString *)name1
withPeople:(NSString *)name2;
Student.m
#import
"Student.h"
@implementation Student
-(void)study{
//实例方法中,可以使用类的实例变量
NSLog(@"%@",_name);
}
+(void)sleep{
//类方法中,不可以用实例变量
}
//带返回值的方法实现
用return
//1.只能有一个返回值
//2.返回值类型和返回的值得类型 (int)/(NSString *)
-(NSString
*)getName{
return _name;
}
-(NSString
*)getSex{
return
_sex;
}
-(int)getAge{
return
_age;
}
-(void)eat:(NSString *)food{
NSLog(@"吃%@",food);
}
-(void)fight:(NSString
*)people{
NSLog(@"干%@",people);
}
-(void)black:(NSString
*)name{
NSLog(@"开始黑%@",name);
}
-(void)kickAss:(NSString *)name1
withPeople:(NSString *)name2{
NSLog(@"中仁兄和%@一起打%@",name2,name1);
}
- (NSString *)play:(NSString
*)name1 withPeople:(NSString *)name2{
//方法名不能重复
play:withPeople:
//方法名的判断:1.去掉-/+ 2.去掉返回值类型 3.去掉参数类型和参数名
4.去掉分号
//剩下的所有内容都是方法名.(不能少了:)
//方法传入的参数(name1,name2)只在方法内部可以使用,在其他方法或者main.m中都不可以调用
NSLog(@"我和%@一起玩%@",name2,name1);
return
name2;
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Student.h"
int
main(int argc, const char * argv[])
{
//-号方法的调用
Student * stu = [[Student alloc]
init];
// [stu study];
// [stu
getName];
// //+号方法的调用
// [Student
sleep];
//
// //[stu
eat:@"鸡蛋"];
// NSString * a =
@"鸡蛋";
// [stu eat:a];
//
// [stu fight:@"深情君"];
// [stu
black:@"中仁"];
//
// [stu
kickAss:@"深情君" withPeople:@"大龙"];
NSString * b = [stu play:@"撸啊撸"
withPeople:@"赵云龙"];
NSLog(@"%@坑死了",b);
return
0;
}
类的继承:面向对象三大特征(封装 继承 多态)
继承:
1.什么是继承:把类细分 后面分出来的子类 继承了父类
2.怎么判断继承(is - a):
A is-a B;如果正确,A就是B的子类
特殊的方法(类的初始化方法)
RichMan.h
#import <Foundation/Foundation.h>
@interface RichMan :
NSObject
{
@public
NSString *
_name;
NSString * _sex;
int
_age;
float _money;
}
- (void) charge;//刷卡
-
(void) sayHi;//泡妹子
- (id)initWithName:(NSString *)name WithSex:(NSString
*)sex WithAge:(int)age WithMoney:(float)money;
@end
RichMan.m
#import "RichMan.h"
@implementation RichMan
-
(void)charge{
NSLog(@"刷卡");
}
-
(void)sayHi{
NSLog(@"我叫%@",_name);
}
//特殊的方法
//初始化方法是一个实例方法(-号),返回值为id(代表任何对象类型),方法名以init开头
只在初始化的时候调用一次
- (id)init//id 代表任何对象
{
//利用super关键字
调用父类的init方法 作用:用于初始化从父类继承过来的实例变量
//利用self(代表自己类的一个对象)
接受super初始化好的对象
self = [super
init];//self 当前类(RichMan)中的一个对象
//如果初始化不成功 self 为
nil(空)
if (self)
{
//如果成功
在判断体中初始化自己的实例变量
_name =
@"深情君";
_sex =
@"男";
_age
= 80;
_money = 10;
}//{}中初始化自己的实例变量
//返回初始化好的对象
return self;
}
-
(id)initWithName:(NSString *)name WithSex:(NSString *)sex WithAge:(int)age
WithMoney:(float)money{
self = [super
init];
if (self)
{
_name =
name;
_sex =
sex;
_age =
age;
_money =
money;
}
return
self;
}
@end
Rich2nd.h
#import
<Foundation/Foundation.h>
#import "RichMan.h"
@interface Rich2nd
: RichMan//确定继承关系
//继承特性:子类会继承父类多有的 实例变量 和 方法
// 子类可以重写父类的方法
//
可以再子类重写的方法中,调用父类的方法
- (void) dragRacing;//飙车
@end
Rich2nd.m
#import "Rich2nd.h"
@implementation
Rich2nd
- (void) charge{
NSLog(@"刷老爸的卡");
[super charge];//调用父类的方法刷卡
super关键字的作用只有一个:用于子类中调用父类的方法
}
//对父类的方法进行重写 子类的方法优先级最高
- (void)
sayHi{
NSLog(@"我叫%@,能交个朋友么",_name);
}
- (void)
dragRacing{
NSLog(@"飙车");
}
@end
main.m
#import
<Foundation/Foundation.h>
#import "RichMan.h"
#import
"Rich2nd.h"
int main(int argc, const char *
argv[])
{
@autoreleasepool
{
RichMan * richman =
[[RichMan alloc] init];
[richman
sayHi];
[richman
charge];
// NSLog(@"富人%@",richman ->
_name);
Rich2nd * rich2nd =
[[Rich2nd alloc] init];
rich2nd
-> _name = @"萌小小艺";
[rich2nd
sayHi];
[rich2nd
charge];
[rich2nd
dragRacing];
RichMan * richman1 =
[[RichMan alloc]initWithName:@"深情君" WithSex:@"男" WithAge:80
WithMoney:10.0];
NSLog(@"%@,%@,%d,%.2f",richman1->_name,richman1->_sex,richman1->_age,richman1->_money);
}
return 0;
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。