oc中面向对象的思想是非常先进的思想,现在很多人工智能也是运用对象的思想思考问题。
对ios学习使用过程中,再重复使用和巩固中我又学到了很多以前忽略或者没有完全理解的问题。
例如:对于属性
@public//公共的谁都可以访问
int _legs;
@protected//受保护的,只有类和其子类可以访问,没有标注默认情况下都是这种
int _height;
@private//私有,只有类定义内部可以访问
int _weight;
这个单独理解比较困难也很抽象。
因为实际中大家都是通过声明过的实现(也可理解为方法)来实现赋值或者调用,所以直接修改也大可不必,只需注意即可。
下面分享1个例子:理解他你就对面向对象有了更深的理解。
题目 : 两个复数相加:即实部 + 虚部i (两部分都为整数)
解题思路:定义一个类(虚、实两个属性)
定义一个相加的方法,生成了两个复数,用一个复数1的虚实部分别加上两一个复数2的虚实部,用一个新的复数3来接受他俩的和!
具体过程如下
#import "Complex.h"
@implementation Complex
// 对象初始化
- (void) setReal:(int)real andVir:(int)vir{
_real = real;
_vir = vir;
}
// 展示
- (void)showAll{
NSLog(@"%i+%ii",_real,_vir);
}
// 两个数复数相加,对象发送消息同时传入另一个对象进行相加,返回相加后的新对象
- (Complex *)add:(Complex *)added{
Complex *newNum = [[Complexalloc]init];//定义新对象以便接受
int tempReal =_real + [addedreal];
int tempVir =_vir + [addedvir];
[newNumsetReal:tempRealandVir:tempVir];
return newNum;
}
// 返回实部
- (int)real{
return_real;
}
// 返回虚部
- (int)vir{
return_vir;
}
@end
#import <Foundation/Foundation.h>
#import "Complex.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
// 计算两个复数的和
Complex *complex1 = [[Complexalloc]init];
[complex1setReal:3andVir:2];
Complex *complex2 = [[Complexalloc]init];
[complex2setReal:6andVir:12];
Complex *sumComplex = [[Complexalloc]init];
sumComplex = [complex2add:complex1];
[sumComplexshowAll];
}
return0;
}