//
// main.m
// OC_2方法
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import <Foundation/Foundation.h>
import "Person.h"
import "Student.h"
import "CollegeStuent.h"
int main(int argc, const char * argv[]) {
/*
// 定义类-->创建对象->>使用对象
// 1.开辟空间
// 2.初始化
Person *p = [[Person alloc] init];
// 赋值和取值
[p setandget];
// 调用带参数的方法(实参)
[p sayHiWithName:@"随便"];
// 成员变量
// 赋值
[p setName:@"随便名字"];
// 取值
NSLog(@"%@", [p name]);
*/
// 创建对象
if 0
Student *dawa = [[Student alloc] init];
// 赋值
[dawa setName:@"12"];
[dawa setNumber:1];
[dawa setNicheng:@"大娃"];
// 取值
NSLog(@"%@ %ld %@", [dawa name], [dawa number], [dawa nicheng] );
Student *erwa = [[Student alloc] init];
[erwa setName:@"11"];
[erwa setNumber:2];
[erwa setNicheng:@"二娃"];
NSLog(@"%@ %ld %@", [erwa name], [erwa number], [erwa nicheng]);
endif
// 继承使用
// 父类创建
Student *s = [[Student alloc] init];
[s study];
// 子类创建
CollegeStuent *cs = [[CollegeStuent alloc] init];
// 方法查询机制: 先找子类中是否重写 如果没有 找父类 直到根类中 如果还没有 则崩溃(unrecognized selector sent to instance)
[cs study];
return 0;
}
//
// CollegeStuent.h
// OC_2方法
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import <Foundation/Foundation.h>
import "Student.h"
// 面向对象三大特性: 继承 封装 多态
// 继承: 子类拥有父类所有的成员变量和方法
// 单(根)继承: 每一个类只有一个父类 唯一一个没有父亲的类是NSObject 叫根类(祖宗类) 包含了所有类都需要的基本信息
// 传递性: A是B的父类 B说C的父类 C中也有A的内容
// 相对性: 父类和子类需要参照物来描述
// 单向性: 已经作为子类的类 不能在成为该类父类的父类
@interface CollegeStuent : Student
{
NSString *_tanLianAi;// 谈恋爱
NSString *_treeNewBee;// 吹牛逼
}
// getter&setter
- (void)setTanLianAi:(NSString *)tanlianai;
- (NSString *)tanlianai;
- (void)setTreeNewBee:(NSString *)treenewbee;
- (NSString *)treenewbee;
@end
//
// CollegeStuent.m
// OC_2方法
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import "CollegeStuent.h"
@implementation CollegeStuent
- (void)setTanLianAi:(NSString *)tanlianai
{
_tanLianAi = tanlianai;
} - (NSString *)tanlianai
{
return _tanLianAi;
} - (void)setTreeNewBee:(NSString *)treenewbee
{
_treeNewBee = treenewbee;
} - (NSString *)treenewbee
{
return _treeNewBee;
}
// 父类重写
// 子类中重新实现和父类中声明的一致的方法 叫做重写
(void)study
{// super 编译器指令 通过super指令 调用父类中的方法 [super study]; // self (对象)对象自己 通过self等于当前类的方法 [self doHomework]; NSLog(@"大学生 学习");
}
(void)doHomework
{NSLog(@"大学生 写作业");
}
@end
//
// Student.h
// OC_2方法
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import <Foundation/Foundation.h>
@interface Student : NSObject
{
NSString *_name;
NSInteger _number;
NSString *_nicheng;
}
// getter&setter
- (void)setName:(NSString *)name;
- (NSString *)name;
- (void)setNumber:(NSInteger)number;
- (NSInteger)number;
- (void)setNicheng:(NSString *)nicheng;
- (NSString *)nicheng;
// 普通方法 - (void)study;
- (void)doHomework;
@end
//
// Student.m
// OC_2方法
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import "Student.h"
@implementation Student
- (void)setName:(NSString *)name
{
_name = name;
} - (NSString * )name
{
return _name;
} - (void)setNumber:(NSInteger)number
{
_number = number;
} - (NSInteger)number
{
return _number;
} - (void)setNicheng:(NSString *)nicheng
{
_nicheng = nicheng;
} - (NSString *)nicheng
{
return _nicheng;
} - (void)study
{
NSLog(@"学生 学习");
} - (void)doHomework
{
NSLog(@"学生 写作业");
}
@end
//
// Person.h
// OC_2方法
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import <Foundation/Foundation.h>
@interface Person : NSObject
{
// 成员变量
NSString *_name;
NSString *_sex;
//#error duplicate member"_sex"
warning NSInteger等基础类型 一定不要加*
NSInteger _age;
CGFloat _height;
CGFloat _weight;
}
// 方法
- (void)setandget;
// 无返回 无参数的方法 - (void)sayHI;
// 无返回 带一个参数
// sayHiWithName 参数描述
// : 参数标识
// (NSString *) 参数类型
// name 参数名 /形参
- (void)sayHiWithName:(NSString *)name;
// 方法名只包含: 参数描述和参数标识
// 方法名: sayHiwithName:age:
(void)sayHiWithName:(NSString *)name
age:(NSInteger)age;
// 方法名: sayHiWithName::
(void)sayHiWithName:(NSString *)name
:(NSInteger)age;
// 两个参数
(void)sayHiWithName:(NSString *)name
age:(NSInteger)age;
// 多参数
(void)sayHiWithName:(NSString *)name
age:(NSInteger)age age:(NSInteger)age age:(NSInteger)age age:(NSInteger)age height:(CGFloat)height weight:(CGFloat)weight sex:(NSString *)sex;
- (void)suibian;
// 标准的赋值方法&取值方法
// setter(设置器)&getter(访问器)
// set+首字母大小不带下划线的成员变量名
- (void)setName:(NSString *)name;
// 小写字母开头不带下划线的成员变量名 - (NSString *)name; // 直接用Name
@end
//
// Person.m
// OC_2方法
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import "Person.h"
@implementation Person
(void)setandget
{_name =@"名字"; _sex = @"性别"; _age = 10; _height = 180; _weight = 160; NSLog(@"%@%@%ld%f%f", _name, _sex, _age, _height, _weight);
}
(void)sayHI
{NSLog(@"Hello");
}
(void)suibian
{NSLog(@"随便");
}
(void)sayHiWithName:(NSString *)name
{// 参数name为形参 保存外部传人内容 NSLog(@"参数: %@", name); // 吧参数赋值给成员变量 _name = name; NSLog(@"成员变量: %@", _name);
}
// getter&setter 实现
// setter设置成员变量
(void)setName:(NSString *)name
{_name = name;
}
// getter返回成员变量
- (NSString *)name
{
return _name;
}
@end