1 #import <Foundation/Foundation.h>
2
3 @interface Person : NSObject
4 @property (assign, nonatomic) int age;
5 - (void)run;
6 + (void)test;
7 @end
8
9 @implementation Person
10
11 - (void)run
12 {
13
14 NSLog(@"Person---Run");
15 }
16
17 + (void)test
18 {
19 NSLog(@"Person +test");
20 }
21 @end
22
23 @interface Student : Person
24 {
25 int _no;
26 //int _age;
27 }
28
29 + (void)test2;
30 @end
31 @implementation Student
32 - (void)run
33 {
34 NSLog(@"Student----Run");
35 }
36
37 + (void)test
38 {
39 NSLog(@"Student+test");
40 }
41
42 + (void)test2
43 {
44
45 [self test];
46 }
47 @end
48 int main() {
49
50 Student * s = [Student new];
51 [s run];
52 [Student test2];
53 return 0;
54 }
55
56 /*
57 繼承的概念:如果A繼承自B,那么A就含有B的所有成員變量和方法,這就叫繼承。
58
59 繼承的作用:代碼重用,建立關(guān)系。
60
61 繼承的編程思想:
62 1.當(dāng)兩個(gè)類擁有相同屬性和方法時(shí)候,就可以將相同的東西抽取到一個(gè)父類中。
63 2.當(dāng)A類擁有B類中的部分屬性和方法時(shí)候,可考慮讓B類繼承A類。(這種場(chǎng)合不能亂用)
64
65 繼承使用的注意事項(xiàng):
66 1.父類要寫在子類前面。
67 2.OC中不允許子類和父類有相同名稱的成員變量。
68 3.子類能重寫父類的方法(override,類方法、對(duì)象方法都能override)。或者實(shí)現(xiàn)父類只聲明沒有實(shí)現(xiàn)的方法。
69 4.當(dāng)調(diào)用某個(gè)方法(類方法、對(duì)象方法)時(shí)候有限去當(dāng)前類中找,當(dāng)當(dāng)前類找不到,再取父類中。
70
71
72 繼承的壞處:
73 1.代碼耦合性太強(qiáng)。
74
75
76 組合關(guān)系:(has a)
77 1.當(dāng)B類是A類的一部分。可以用組合關(guān)系。
78
79 如何區(qū)分繼承和組合
80 1.當(dāng)類A是類B,則可以用繼承。
81 2.當(dāng)類A擁有類B,則可以用組合。
82 */