23、创建一个名为ClassA的类,它继承自NSObject类。再添加名为ClassB和ClassB2的两个新类,它们都是ClassA的子类。那么ClassB和ClassB2之间的关系是怎样的?请指出NSObject类、ClassA、ClassB和ClassB2之间的层级关系。ClassB的超类是什么?ClassB2的超类是什么?一个类可以有多少个子类和多少个超类?
类层级关系说明
- ClassB 和 ClassB2 是兄弟关系
- 它们都是 ClassA 的子类
- ClassA 的超类是 NSObject
- ClassB 的超类是 ClassA
- ClassB2 的超类也是 ClassA
- 因此, NSObject 也是 ClassB 和 ClassB2 的间接超类
说明:在一个类层级结构中,一个类可以有任意数量的子类,但只能有一个直接超类。
24、编写一个名为 translate: 的 Rectangle 方法,该方法接受一个 XYPoint 对象作为参数。让它将矩形的原点按指定向量进行平移。注意:平移只是意味着将点从一个位置移动到另一个位置。
以下是实现 translate: 方法的代码示例:
#import "Rectangle.h"
#import "XYPoint.h"
@implementation Rectangle
- (void)translate:(XYPoint *)vector {
self.origin.x += vector.x;
self.origin.y += vector.y;
}
@end
在上述代码中, translate: 方法接受一个 XYPoint 对象 vector 作为参数,然后将矩形的原点的 x 和 y 坐标分别加上 vector 的 x 和 y 坐标,从而实现矩形原点的平移。
25、定义的id类型变量dataValue,能否被赋值为Rectangle对象?也就是说,语句dataValue = [[Rectangle alloc] init]; 是否有效?为什么?
该语句有效。因为 dataValue 被声明为 id 对象类型, id 类型可以用来持有程序中任何类型的对象,所以可以将 Rectangle 对象赋值给 dataValue 。
26、在Fraction类的add:方法中添加一个计数器,以统计该方法被调用的次数。如何获取计数器的值?
可在 Fraction 类中定义一个静态变量作为计数器,在 add: 方法中每次调用时让计数器加1。要获取计数器的值,可在类中添加一个类方法来返回该计数器的值。示例代码如下:
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
@property int numerator, denominator;
- (void) print;
- (void) setTo: (int) n over: (int) d;
- (double) convertToNum;

最低0.47元/天 解锁文章
82

被折叠的 条评论
为什么被折叠?



