面向对象

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

面向对象佟刚mail:simpleit@163.com新浪微博:@_TongGang相关定义•类:表示对象的类型,对象引用类来获取和本身有关的各种信息。•对象:包含值和指向其类的隐含指针。也成为实例•消息:对象可以执行的操作,用于通知对象去做什么.•方法:相应消息而生成的代码•接口:对象的类应该提供的特性的描述.•实现:使接口正常工作的代码@interface•创建某个特定类的对象之前,Objective-C编译器需要一些有关该类的信息。特别地,它必须知道对象的数据成员和它提供的特性。使用@interface指令把这种信息传递给编译器。@interface实例类名父类属性,成员变量方法声明-表示为实例方法,+表示类方法@implementation•@interface:Circle:用于定义类的公共接口.接口被成为API(applicationprogramminginterface)•@implementation部分为真正起作用的代码•@implementation是一个编译器指令,表明将要为某个类提供代码.类名出现在@implementation之后•可以在@implementation中定义在@interface中无相应声明的方法.可以把它们看成是私有方法,仅在类的实现中使用.@implementaion实例实例化对象•为了创建新对象,需要向相应的类发送new消息.•在Objective-C上,调用方法的简单格式是–[实例方法];–[类名方法];练习1•扩展示例程序,加入其它图形:Rectangle,Egg.在每个类中添加draw()方法,在main方法中声明id数组,分别存放Circle,Rectangle,Egg对象,遍历调用这些对象的draw方法.练习2•定义一个名为XYPoint的类,用来保存笛卡尔坐标(x,y),其中x和y均为整数.定义一些方法,分别用来设置点的坐标x,y,编写一个Objective-C程序实现这个新类并测试.练习3•创建Person类的对象,设置该对象的name、age和sex属性,调用study方法,输出字符串“studying”,调用showAge()方法显示age值,调用addAge()方法给对象的age属性值增加2岁。继承•语法:类名父类继承下的实例变量PersonnameageStudentschool继承关系图isanameageschool实例变量分布图(NSObject)(Person)(Student)self•self:指向接收消息的对象的指针(Java的this)•方法使用self参数查找它们要使用的实例变量:self指向继承链中第一个类的第一个实例变量的内存地址,通过在该地址加上偏移地址,编译器就可以查找其它实例变量的位置.练习4(1)定义一个ManKind类,包括–成员变量intsex和intsalary;–方法voidmanOrWorman():根据sex的值显示“man”(sex==1)或者“women”(sex==0);–方法voidemployed():根据salary的值显示“nojob”(salary==0)或者“job”(salary!=0)。(2)定义类Kids1继承ManKind,并包括–成员变量intyearsOld;–方法printAge()打印yearsOld的值。(3)在main方法中实例化Kids1的对象someKid,用该对象访问其父类的成员变量及方法。练习5根据下图实现类。在TestCylinder类中创建Cylinder类的对象,设置圆柱的底面半径和高,并输出圆柱的体积。Circle(圆)radius:doublesetRadius(doubleradius):voidradius():doublefindArea():double计算圆的面积Cylinder(圆柱)length:doublesetLength(doublelength):voidlength():doublefindVolume():double计算圆柱体积重写方法在子类中可以根据需要对从父类中继承来的方法进行改造—覆盖方法(方法的重置、重写),在程序执行时,子类的方法将覆盖父类的方法。覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。练习6•修改练习4中定义的类Kids1,在Kids1中重新定义employed()方法,覆盖父类ManKind中定义的employed()方法,输出“Kidsshouldstudyandnojob.”super在Objective-C中使用super来引用父类的成分–super可用于调用父类中定义的成员方法练习7•修改练习6中定义的类Kids1中employed()方法,在该方法中调用父类ManKind的employed()方法,然后再输出“butKidsshouldstudyandnojob.”练习8修改练习5中定义的Cylinder类,在Cylinder类中覆盖findArea()方法,计算圆柱的表面积。考虑:findVolume方法怎样做相应的修改?在main方法中创建Cylinder类的对象,设置圆柱的底面半径和高,并输出圆柱的表面积和体积。

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功