- #import <Foundation/Foundation.h>
- @interface Animal : NSObject//设计个动物类
- @property double weight;
- @property int age;
- @end
- @implementation Animal
- - (void)sleep
- {
- NSLog(@"睡觉了");
- }
- - (void)eat
- {
- NSLog(@"吃食物");
- }
- @end
- @interface Dog : Animal//设计个狗类继承自动物类
- - (void)cry;
- @end
- @implementation Dog
- - (void)cry
- {
- NSLog(@"汪汪大叫");
- }
- @end
- @interface Cat : Animal//设计个猫类继承自动物类
- - (void)catch;
- @end
- @implementation Cat
- - (void)catch
- {
- NSLog(@"抓老鼠");
- }
- @end
- void cage(Animal *animal)//编写一个函数实现将动物关进笼子里的功能
- {
- NSLog(@"关进笼子里");
- }
- int main()
- {
- Animal *a1 = [Animal new];//实例化一个动物对象
- [a1 eat];//动物吃食
- Animal *a2 = [Dog new];//动物指针指向狗对象,多态特性
- [a2 cry];/*让狗叫,这里编译器会发出一个警告,但是仍然可以编译通过因为在运行时电脑会动态检测a2所指对象的真实形态以让其调用其方法,这里也可以将a2的类型强制转换为Dog类型:[(Dog *)a2 cry]*/
- Cat *c = [Cat new];//实例化一个猫对象
- [c catch];//让猫抓老鼠
- cage(a1);//把动物关进笼子里
- cage(a2);//把用动物指针指的狗关进笼子里
- cage(c);//直接将猫对象关进笼子里
- return 0;
- }
复制代码 |