继承

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值