- #import <Foundation/Foundation.h>
- //成绩
- @interface Score : NSObject
- {
- int _cScore;
- int _ocScore;
- }
- - (void)setCScore:(int)cScore;
- - (int)cScore;
- + (void)test;
- @end
- @implementation Score
- - (void)setCScore:(int)cScore
- {
- _cScore = cScore;
- }
- - (int)cScore
- {
- return _cScore;
- }
- + (void)test
- {
- NSLog(@"调用你了test函数");
- }
- @end
- //学生
- @interface Student : NSObject
- {
- //组合,使Student拥有Score的成员变量
- Score *_score;
- int _weight;
- }
- // 这个要写全
- - (void)setScore:(Score *)score;
- - (Score *)score;
- @end
- @implementation Student
- - (void)setScore:(Score *)score
- {
- _score = score;
- }
- - (Score *)score
- {
- return _score;
- }
- @end
- int main()
- {
- //这里报错
- Student *s = [Student new];
-
- // [s setCScore:90]; // 你这个是继承的时候的写法
-
-
- Score *sc = [Score new]; // 组合并不能直接调用score里的内容,需要你先创建一个Score对象,然后把这个对象给Student
- [sc setCScore:90];
-
- [s setScore:sc];
-
- // NSLog(@"这个学生的成绩是%d分", [s cScore]);这是错误的
-
- // 应该是用Student中的score这个对象属性去调用Score这个对象里的属性
- NSLog(@"这个学生的成绩是%d分", [[s score] cScore]);
-
- // test是Score的类方法,不能用Student去调用
- // [Student test];
-
- /*问题
- 1.继承有子类与父类之说,组合有没有
- 2.组合里面的成员变量如何使用啊
- */
-
-
- return 0;
- }
复制代码
|