继承

来源:互联网 发布:如何打开445端口 编辑:程序博客网 时间:2024/06/01 13:52

1、没有父类的类位于类层次结构的最顶层,称为根类。虽然OC允许我们定义自己的根类,但通常不这么做。至此,我们所定义的类都属于NSObject根类的派生类

2、只要定义一个新类(不是一个新的根类),都会继承有些属性。父类的非私有实例变量和方法都会成为新类定义的一部分。子类可以直接访问这些方法和实例变量

3、在子类中使用实例变量,必须在接口部分声明。在实现部分声明和合成的实例变量是私有的,子类不能直接访问,需要明确定义或合成取值方法,才能访问实例变量的值

4、使用术语,可以将类成为子类和父类,也可以称为子类和超类
根类没有超类,ClassB位于继承的最底部,没有子类。
这里写图片描述

这里写图片描述
虽然ClassB中没有定义任何实例变量,但可以通过printVar方法输出实例变量X的值。这是由于ClassB是ClassA的子类,继承了ClassA的公有实例变量

5、覆写方法
不能通过继承删除或减少方法,但可以通过覆写来更改继承方法的定义。现ClassB将继承ClassA中的initVar方法,只要定义一个同名的新方法,就可以替代继承的方法。使用和父类相同的名称定义的方法代替或覆写了继承的定义。新方法必须具有相同的返回类型并且参数的数目和覆写的方法相同。
这里写图片描述

这里写图片描述

6、@class指令
当编译器不需要知道引入和处理整个XYPoint.h文件(虽然它很小)只需要知道XYPoint是个类名,@class指令 可以提高效率。但如果要引用整一个XYPoint类的方法(在实现部分),@class指令是不够的,因为编译器需要更多的信息,需要清楚方法有多少参数、它们是什么类型、方法的返回类型是什么。

@class XYPoint;XYPoint *origin;

@class的作用就是,编译器遇到这样的语句,可以告诉编译器XYPoint是一个类的名字,origin是XYPoint类的一个对象。

7、

//在.h文件中的代码如下:#import <UIKit/UIKit.h>@interface QuizViewController : UIViewController@end
////要在Objective-C中声明父类,需要使用@interface指令,后跟类名,接着为冒号,冒号后面为父类的类名。Objective-C只允许单继承,所有的类只能有一个父类:@interface ClassName:SuperclassName
原创粉丝点击