05-OC多态_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 05-OC多态

05-OC多态

 2013/12/21 17:09:14  回读  博客园  我要评论(0)
  • 摘要:目录:一、继承的缺陷二、为什么使用继承三、组合和聚合四、多态回到顶部一、继承的缺陷1提高了程序的复杂度,维护性和扩展性低2破坏了类的封装性回到顶部二、为什么使用继承1代码复用、制定规则、为了多态回到顶部三、组合和聚合1复用代码更好的方式是组合和聚合,而不是继承。2组合和聚合也是类与类之间"hasa"的关系组合好比一体机,聚合好比台式机兼容好3继承是继承一个对象,组合和聚合是对象之间是相互独立的4组合优点:*保留了封装性*操作便利缺点:*灵活度不够生命周期:cpu和computer封装性是独立的
  • 标签:

目录:

一、继承的缺陷

二、为什么使用继承

三、组合和聚合

四、多态

回到顶部

一、继承的缺陷

1 提高了程序的复杂度,维护性和扩展性

2 破坏了类的封装性

回到顶部

二、为什么使用继承

1 代码复用、制定规则、为了多态

回到顶部

三、组合和聚合

1 复用代码更好的方式是组合和聚合,而不是继承。

2 组合和聚合也是类与类之间"has a"的关系

组合好比一体机,聚合好比台式机兼容好

3 继承 是继承一个对象,组合和聚合是对象之间是相互独立的

4 组合

优点:*保留了封装性*操作便利

缺点:*灵活度不够

生命周期:cpu和computer封装性是独立的,生命周期是一致的,一起存在,一起销毁,高耦合在一起

5 聚合

优点*保留了封装性*灵活度高

缺点:*操作欠佳

生命周期:cpu和computer生命周期不一致,低耦合,方便操作,方便cpu替换,两个对象,各过各的。

回到顶部

四、多态

1 多种形态,引用的多种形态。

对于一个引用变量,可以指向任何类的对象。

对于一个父类的引用(类与类之间有一种继承关系),可以指向子类,也可以指向本类,指向的类型不同。

当通过此引用向对象发送消息,调用的方法是不同的,此时方法的调用就是多态。

2类与类之间有关系,继承关系

父类的引用可以指向子类的引用或者本类的引用。

父类的引用指向子类的对象,发送消息,调用的是子类对象的方法。

父类的引用指向本类的对象,发送消息,调用本类的方法。

3 编译期类型和运行期类型

*在多态下,父类的引用可以指向子类的引用,当编译的时候,编译器无法确定指向的对象是什么类型,所有编译器会将引用当做父类类型引用编译检查。

*在调用方法时,发现确实是子类对象,为子类类型创建空间。

总结:TRAnimal* animal2 = [[[TRDog alloc] init] autorelease];编译时,把TRDog类型当成TRAnimal类型编译。[animal2 eat];运行时,调用的是TRDog类型的对象。

练习:定义一个交通工具类TRTransortation,有一个能力print输出交通工具的具体信息。

交通工具TRTexi的士 TRBus巴士 TRBike自行车

创建五个交通工具,使用多态输出交通工具的信息。

4 多态可以用在参数

练习:创建一个学生对象,gotoSchoolByTrans()

main:创建学生对象,向gotoSchoolByTrans()发送消息,输出,该学生成什么交通工具来上学。

age:10乘坐的士上学

age:12乘坐巴士上学

age:15乘坐自行车上学

5 多态可以用在返回值类型,返回值多态

练习:写一个方法,帮我们创建对象

传人参数1->的士 2->巴士 3 -> 自行车

6 多态用作数组

7 多态的好处

可以让我们设计更合理的代码,使代码更通用,使用程序的可维护性和可扩展性更强。

8 多态特性的展现

*可以用在方法的参数

*可以用在方法的返回值类型

*可以用在数组和集合上

重构:写出以下类,用最少的代码解决问题,

TRShape形状类

TRRectangle矩形类x,y

TRCircle圆形r

TRSquare正方形x

求:周长perimeter与面积area,show方法,查看周长和面积。属性、初始化方法、工厂方法、内存管理、继承。(创建三个对象矩形、圆形、正方形、统一遍历)

练习:创建一个Person类,show方法,查看艺术品的详细信息,每个艺术品,都用print查看当前艺术品的详细信息,创建三个艺术品,分别查看艺术品的信息。

Painting(油画):author(作者)、year(年代)、product(艺术品名称)

Music(音乐):

      Pop(流行):

           product(艺术品名称)、Singer(演唱者)、time(时长)

      Rock(摇滚):

           SingerCount(演唱者人数)

 

结构:

           Arts(艺术品)

|-------------------+------------------|

Painting                        Music

                            |--------+--------|

                                          Pop            Rock

NSString的使用

NSString* name = @"zhangsan";

stu.name = @"zhangsan";

NSLog(@"%@",stu.name);

@property(copy) NSString* name;

练习:创建一个TREmployee类,TRStaff普通职员,TRManager领导,工资salary、工种job、姓名name,方法输出个人信息print,如果相应的工种领导的工资会比普通职员高2000。TRHR类,人力资源,通过参数来招人,最少代码。(多态、初始化、工厂方法、内存管理)

           1软件工程师6000

           2测试工程师4500

           3高级软件工程师8000

           4 软+领 5 测+领 6 高软+领

 

  • 相关文章
发表评论
用户名: 匿名