继承:
A
{
}
B : A
{
} //类B拥有类A的所有东西
继承的好处:
1.抽取重复代码
2.建立了类之间的关系
继承的使用场合:
1.当两个类拥有相同属性和方法时,就可以将相同的东西抽取到一个父类中
2.当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类
void feed(Dog *d)
{
[d eat];
}
void feed2(Cat *c)
{
[c eat];
}
void feed(Animal *a) //可以用这一个函数取代前面两个函数
{ //多态的好处
[a eat];
}
Animal *a = [Dog new]; //多态: 父类指针指向子类对象
多态的好处:
如果参数中使用的是父类类型,可以传入父类,子类对象,节省代码
多态的局限性:
Animal *aa = [Dog new];
[aa run];//警告 能通过,但是不建议这样写
父类类型的变量 不能 用来调用子类的方法,虽然能调用成功
可以先强制转换
Dog *dd = (Dog *)aa; //骗一下编译器
[dd run];
总结:
多态:
继承:
1.没有继承,就没有多态
2.代码的体现:父类类型的指针指向子类对象
3.好处:如果参数中使用的是父类类型,可以传入父类,子类对象,节省代码
4.局限性:
父类类型的变量不能直接调用子类特有的方法,必须强转为子类类型变量后,才能直接调用子类特有的方法
|
|