1.self
self的用途:
1>概念:谁调用了当前方法,self就代表谁
*self出现在对象方法中,self就代表对象
*self出现在类方法中,self就代表类
2>可以利用“self->成员变量名”访问当前对象内部的成员变量
3>[self方法名]可以调用其他对象方法或类方法
详情请看:类的练习
+ (int)averageOfNum1:(int)num1 andNum2:(int)num2
{
//在这种情况下,self代表类
int sum = [self sumOfNum1:num1 andNum2:num2];
return sum / 2;
}
死循环:
- (void)test
{
NSLog(@"调用了-test方法");
//会引发死循环
//[self test];
}
+ (void)test
{
NSLog(@"调用了+test方法");
//会引发死循环
//[self test];
}
调用不存在函数:
+ (void)haha2
{
//haha3()函数直接调用就好[]中括号是给对象方法和类方法使用的
//错误写法根本没有对象方法的haha1
//[self haha1];
NSLog(@"hhaha2----");
}
2.继承
一,继承的好处:
1>抽取重复代码
2>建立了类之间的关系
父类:Animal
子类:Dog Cat
二,子类可以拥有父类中所有的对象和方法
1>基本上所有的类的根类是NSObject
@interface Animal : NSObject
{
int _age;
double _weight;
}
@end
@implementation Animal
@end
@interface Dog : Animal
@end
@implementation Dog
@end
@interface Cat : Animal
@end
@implementation Cat
@end
1.子类不可以写在父类之前因为编译器是由上往下来执行,(只需要有父类的声明在子类之前都不会有任何问题,方法可以随便放)
2.不允许子类和父类拥有相同的成员变量 duplicate member
3.允许子类和父类拥有相同的方法
重写:子类重新实现父类中的某个方法,覆盖父类以前的做法
4.调用某个方法时,优先去当前类中找,如果找不到,会去父类中找
缺点:耦合性太强
类之间关系过于紧密,当某个类不见了另外一个类也无法实现
1>当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2>当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类
3>使用继承时,要是同属性的东西
super的作用
1>直接调用父类中某个方法
2>super处在对象方法中,那么就会调用对象方法
super处在类方法中,那么就会调用类方法
3>使用场合:当想子类重写父类的方法时,又想保留父类的一些东西就会使用super
六,多态:
多态:多种形态对象有多重形态
必须有继承才会有多态
多态:父类指针指向子类对象
多态的好处和局限性:
1.没有继承就没有多态
2.代码的体现:父类类型的指针指向子类的对象
3,好处:如果函数/方法参数中使用的是父类类型,可以转入父类,子类对象
把多个函数整成一个函数减少代码
4.局限性:
1>父类类型的变量不能直接调用子类特有的方法。
如要使用必须强转为子类类型变量后,才能直接调用子类特有的方法