一、继承、封装、类别的总结
1、功能
继承:拥有父类属性和方法、可以加方法属性,可以改方法实现
封装:做一个类,做一个方法
类别:可以加方法
2方法调用
继承:父类或者子类的对象调用
封装:封装好的这个新类的对象或者类名调用
类别:基础类的对象调用
3关于self
继承:因为用的父类或者子类的对象调用的,父类或者子类的方法也是属于这些父类或者子类,所以在这些方法中,可以把正在调用的父类或者子类的对象用self表示
封装:如果用封装的这个类的对象来调用,那么对象可以在方法中用self表示,但是如果是方法中传进来的参数的时候,这个参数不能用self来表示
类别:因为用的基础类对象调用的,类别的方法又是属于基础类的,所有在类别的方法中,可以把调用方法的对象用self表示
self只能表示当前类的对象
二、复合
1、复合(大的分成几个小的)
BigClass *big = [BigClassalloc];//做一个大类的对象
//做所有的小类的对象
SmallOne *one = [SmallOnealloc];
one.oneOne = @"1";
one.oneTwo = @"2";
SmallTwo *two = [SmallTwoalloc];
two.twoOne = @"3";
two.twoTwo = @"4";
//把做好的小类对象赋值给大类中这两个小类所对应的属性
big.one = one;
big.two = two;
NSLog(@"%@",big.one.oneOne);
2、复合(大类加了一堆同样的小类对象)
//做几个小类的对象
InsideClass *insideOne = [InsideClassalloc];
insideOne.infoOne = @"pp";
insideOne.infoTwo = @"18";
InsideClass *insideTwo = [InsideClassalloc];
insideTwo.infoOne = @"qq";
insideTwo.infoTwo = @"16";
//做一个大类对象,并初始化大类的可变数组
AllClass *all = [AllClassalloc];
all.insideArr = [NSMutableArrayarrayWithCapacity:0];
//把小填进大的数组中
[all.insideArr addObject:insideOne];
[all.insideArr addObject:insideTwo];
//当需要用的时候,从大的数组中,找到其中一个小的,再取得这个小的对象的某些属性
InsideClass *tempInside = [all.insideArrobjectAtIndex:0];
NSLog(@"%@",tempInside.infoOne);