继承与多态
1,关键字的使用self和super
1.self 在对象方法中,指代的就是调用当前方法的那个对象
比如在.M文件中它可以代表当前对象去调用另一个方法名
[self 方法名 ];
2.self在类方法中就只带当前的类
[self 方法名];
3.修饰实际变量
把。h文件中不用下划线这时可以用self
self ->age=age
self可以理解为自己
2.继承
动物 吃 ,跑 父类
狗 /吃 跑/ 看家 子类
毛/吃 跑/ 上树 子类
1,就是父类中的方法子类它也有并且可以调用
子类也必须引入父类的
在main函数中必须引出头文件
2,怎么调用?
首先要创建一个对象
[对象 调用方法];
但是调用时候不同的类都要先创建对象然后才能调用
可以调用父类的也可以调用自己的
3,子类继承父类的方法时进行重现
就是用super调用父类方法时然后重新赋值
比如调用父类吃的方法
[super eat];
然后打印它吃什么,就会在main函数中打印出狗会吃什么而不是继承动物吃的东西了
4,子类没有的东西他会继承父类一级一级的往上面找一直去找到object 找不到就报错了
3实例变量的修饰符
public 共有的 在任何地方都能访问
protected 受保护的 默认类型只能在当前子类访问
private 私有的 只能在当前类使用只能在当前类访问 子类也不可以去访问
description以%@输出实例对象
格式:-(nsstring)
description{
}
4多态
1,首先满足多态的条件
存在继承关系的
存在方法重写
父类指针指向子类
多态的特点就是不同对象能够响应相同的方法能力
就是子类都可以响应父类的方法
2, 在.h和.m文件中不变
在main函数中
依然是创建一个对象但是 [要指向的子类 new];
[指针 方法];
如果要掉用另一个子类
父类的指针 =[要指向的子类 new];
[指针 方法];
3、父类能调用子类不用重写的方法
就是强转一下
[[子类* ]父类的指针 另一个子类的方法]
5,类的本质
类的本质也是对象,类对象
类对象的获取
创建一个类calss是所有类的基类
calss 指针=[ 类 calss]