继承
1. 继承好处(OC 只支持但继承)
1> 抽取重复代码
2> 建立了类之间的关系
3> 子类可以拥有父类中的所有成员变量和方法
2. 方法重写
方法重写又称方法覆盖
规范:
若子类中的方法与父类中的某一方法具有相同的方法名、返回值类型和参数,则新方法将覆盖原有方法。
3. 方法重载
方法重载让类以同意的方式处理不同类型数据。
特点: 重载的方法具有相同的名字,但具有不同的参数和不同的定义。
调用方法时,通过传递给他们的不同个数和类型的参数来决定具体使用哪个方法。
规范:
1> 方法名一定要相同。
2> 方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
3> 方法的返回值类型,修饰符可以相同,也可以不相同。
区别: 方法重写用于父子类之间 方法重载用于同一个类中。
重写:子类重新实现父类的某个方法覆盖父类以前的做法
3. super
功能: super 关键字表示父类,可以使用super访问父类中被子类隐藏的或重写的方法。
范例: [super setX]; 表示调用父类的setX方法;
继承初始化过程:
1> 永远首先调用父类的初始化方法。
2> 检查调用父类初始化方法所产生的对象的结果。(如果为 nil,初始化不能继续执行)
3> 初始化实例变量时,如果该变量时一个引用对象,可以根据实际情况使用copy或者retain方法。
4> 初始化实例变量后,返回 self
注:
1. 直接调用父类中的某个方法
2. super处在对象方法中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法
3. 使用场合: 子类重写父类的方法时保留父类的一些行为。
4. 抽象类
特点: 抽象类中没有包含足够的信息来描绘一个具体的对象。
Objective-C 语言没有特别的关键字来定义抽象类。
5. 访问控制
@public : 在任何地方都能直接访问对象的成员变量
@private: 只能在当前类的对象方法中访问,不能被子类中定义的方法直接访问
@protected: 可以在当前类和子类的对象方法中直接访问(默认修饰)
@package: 只要处在同一个框架中就能直接访问对象的成员变量。
6. 注意
1. 不允许子类和父类拥有相同名称的变量。
1> 基本上所有类的根类都是NSObject
2.继承的使用场合
1> 当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中。
2> 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类
继承: xx 是 xxx
组合: xxx 拥有 xxx
3.注意
1> 父类必须声明在子类的前面
2> 子类不能拥有和父类相同的成员变量
3> 调用某个方法时,有限去当前类中找,找不到依次去父类中找
3.坏处: 耦合性太强 |
|