#import <Foundation/Foundation.h>
#pragma mark 狗类的声明
@interface Dog:NSObject
{
    @public
    NSString *color;
    float speed;
    NSString *sex;
    float weight;
}
-(void) eat:(NSString *) foodName;//吃
-(void) jiao;//叫
-(void) run;//跑
-(BOOL) isCompareColorWithOther:(Dog *) Dog;//传一个狗对象,与之前的狗颜色进行比较
-(float) isCompareSpeedWithOther:(Dog *) Dog;//速度进行比较
@end
#pragma mark 狗类的实现
@implementation Dog  //吃的方法
-(void) eat:(NSString *) foodName
{
    weight+=0.5f;
    NSLog(@"狗正在吃%@,狗的体重为%.2f",foodName,weight);
}
-(void) jiao
{
    NSLog(@"狗的颜色为%@,速度为%.2f,性别为%@,体重为%.2f",color,speed,sex,weight);
}

-(void) run
{
    weight-=0.5;
    NSLog(@"跑完之后的速度为%.2f,跑完之后的体重为%.2f",speed,weight);
}
-(BOOL) isCompareColorWithOther:(Dog *)Dog
{
    if(color == Dog->color)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}
-(float) isCompareSpeedWithOther:(Dog *)Dog
{
    return (speed - Dog->speed);
}
@end
#pragma mark 人类的声明
@interface Person:NSObject
{
    @public
    NSString *name;
    Dog *dog;
}
-(void)feedDog:(NSString*)feedName;
-(void)liuGou;
@end
@implementation Person
-(void)feedDog:(NSString*)feedName
{
    [dog eat:feedName];
}
-(void)liuGou
{
    [dog run];
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        Dog *dog1= [Dog new];
        dog1->color=@"金色";
        dog1->speed=37.0f;
        dog1->weight=27.0f;
        dog1->sex=@"公";

        Dog *dog2= [Dog new];
        dog2->color=@"银色";
        dog2->speed=28.0f;
        dog2->weight=20.0f;
        dog2->sex=@"公";

        [dog1 eat:@"骨头"];
        [dog1 jiao];
        [dog1 run];
        BOOL isSameColor=[dog1 isCompareColorWithOther:dog2];
        NSLog(@"颜色是否相同 = %d", isSameColor);
        float speedCha=[dog1 isCompareSpeedWithOther:dog2];
        NSLog(@"速度差 = %.2f", speedCha);

        NSLog(@"----------------------");
        Person *person=[Person new];
        person->name=@"张三";
        person->dog = dog2;
        [person feedDog:@"大骨头"];
        [person liuGou];
    }
    ;
}

_dog 人遛狗

#import <Foundation/Foundation.h>
@interface Person:NSObject
{
@public
    int _age;
    float _weight;
}
-(float) eat:(float)x;
-(float) walk:(int)y;
@end

@implementation Person
-(float) eat:(float)x
{
    ) {
        return _weight+0.6;
    }
    else
    {
        return _weight;
    }
}
-(float) walk:(int)y
{
    ) {
        ));
    }
    else
    {
        return _weight;
    }
}
@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *P= [Person new];
        P->_weight=;
        ];
        ];
        NSLog(@"人吃食物后的体重为%.2f,人散步后的体重为%.2f",E,W);
    }
    ;
}

_person 人散步

#import <Foundation/Foundation.h>
@interface Car:NSObject
{
    //成员的声明
    @public
    int speed;
    NSString *color;
}
    //方法的声明
-(void) run;
@end

@implementation Car
//方法的实现

-(void) run
{
    speed=;
    color=@"blue";
    NSLog(@"speed=%d,color=%@",speed,color);

}
@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        Car *c=[Car new];
//        c->speed=100;
//        c->color=@"red";
        [c run];
    }
    ;
}

声明实现及调用

#import <Foundation/Foundation.h>

#pragma mark 子弹类的声明
@interface Bullet : NSObject
{
    @public
    int bulletCount;
}
@end
#pragma mark 子弹类的实现
@implementation Bullet

@end

#pragma mark 枪类的声明
@interface Gun : NSObject
{
    @public
    NSString *size;
}
-(void) shoot:(Bullet *) bullet;
@end
#pragma mark 枪类的实现
@implementation Gun
-(void) shoot:(Bullet *) bullet
{
    )
    {
        bullet->bulletCount --;
        NSLog(@"%@正在射击,剩余子弹:%d", size, bullet->bulletCount);
    }
    else
    {
        NSLog(@"没子弹了!");
    }
}
@end

#pragma mark -
@interface Soldier:NSObject
{
    @public
    NSString *name;
    int level;
    int life;
}
-(void) fireByGun:(Gun *)gun andBullet:(Bullet *)bullet;
@end
@implementation Soldier
-(void) fireByGun:(Gun *)gun andBullet:(Bullet *)bullet
{
    [gun shoot:bullet];
}
@end
//#pragma mark 士兵类声明
//@interface Soldier : NSObject
//{
//    @public
//    NSString *name;
//    int level;
//    int life;
//}
//-(void) fireByGun:(Gun *) gun andBullet:(Bullet *) bullet;
//@end
//#pragma mark 士兵类实现
//@implementation Soldier
//-(void) fireByGun:(Gun *) gun andBullet:(Bullet *) bullet
//{
//    [gun shoot:bullet];
//}
//@end

int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        Gun *g = [Gun new];
        g->size = @"小米加步枪";
        Soldier *s = [Soldier new];
        s->name = @"斯沃特";
        s->life = ;
        s->level = ;
        Bullet *_bullet = [Bullet new];
        _bullet->bulletCount = ;

        [s fireByGun:g andBullet:_bullet];
        [s fireByGun:g andBullet:_bullet];
        [s fireByGun:g andBullet:_bullet];
        [s fireByGun:g andBullet:_bullet];
    }
    ;
}

CrossFire

//  Calculator.h

#import <Foundation/Foundation.h>
#import "Car.h"
@interface Calculator : NSObject
-(int) Add:(int)num1 and:(int)num2;
+(int) Add:(int)num1 and:(int)num2;
-(void) dxdydx;
-(void) dxdylei;
-(void) _self;
+(void) leidydx;
+(void) leidylei;
-(void) dxdydx:(Car *)_car;

//格式化字符串
-(void) _NSString;
@end
-----------------------------------------------------------------------------------------
//  Calculator.m

#import "Calculator.h"
#import "Car.h"
@implementation Calculator
-(int) Add:(int)num1 and:(int)num2
{
    return num1+num2;
}
+(int) Add:(int)num1 and:(int)num2
{
    return num1+num2;
}
-(void) _NSString
{
    ; i<; i++)
    {
        NSString *str=[NSString stringWithFormat:@"%02d.jpg",i];
        NSLog(@"%@",str);
    }
}
-(void) dxdydx
{
    //对象方法调用对象方法
    Car *car=[Car new];
    [car run];
    [self _self];//self代表当前类的一个对象,调用自己的对象方法
}
-(void) _self
{
    NSLog(@"用self调用自身");
}
-(void)dxdylei
{
    //对象方法调用类方法
    [Car run];
}
+(void)leidydx
{
    //类方法调用对象方法
    Car *car=[Car new];
    [car run];
}
+(void)leidylei
{
    //类方法调用类方法
    [Car run];
}
//通过传参
-(void)dxdydx:(Car *)_car
{
    Car *car=[Car new];
    [car run];
}
@end
-----------------------------------------------------------------------------------------
//
//  Car.h

#import <Foundation/Foundation.h>

@interface Car : NSObject
-(void) run;
+(void) run;
@end
-----------------------------------------------------------------------------------------
//
//  Car.m

#import "Car.h"

@implementation Car
-(void) run
{
    NSLog(@"Car的对象方法被调用");
}
+(void) run
{
    NSLog(@"Car的类方法被调用");
}
@end
-----------------------------------------------------------------------------------------
//
//  main.m

#import <Foundation/Foundation.h>
#import "Calculator.h"
#import "Car.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Calculator *c1=[Calculator new];
         and:];
         and:];
        NSLog(@"对象方法加=%d",res1);
        NSLog(@"类方法加=%d",res2);
        NSLog(@"------------------");
        //生成类的一个对象,然后调用
        [c1 dxdydx];
        [c1 dxdylei];
        //作为一个参数调用
        Car *car=[Car new];
        [c1 dxdydx:car];
        NSLog(@"--------------------");
        [Calculator leidydx];
        [Calculator leidylei];
        NSLog(@"------------------------");
        [c1 _NSString];
    }
    ;
}

Calculator

//
//  Employee.h

#import <Foundation/Foundation.h>

@interface Employee : NSObject
{
    NSString * _name;
    int _age;
    float _salary;
}
-(void)setName:(NSString *)name;
-(NSString *)name;
//@property NSString * name;
-(void)setAge:(int)age;
-(float)salary;
@end
-----------------------------------------------------------------------------------------
//
//  Employee.m
//  P1
#import "Employee.h"

@implementation Employee
-(void)setName:(NSString *)name
{
    _name=name;
    NSLog(@"设置的名字为%@",_name);
}
-(NSString *)name
{
    _name=@"osay";
    return _name;
}
-(void)setAge:(int)age
{
    _age=age;
    NSLog(@"设置的年龄为%d",_age);
}
-(float)salary
{
    _salary=5687.8;
    return _salary;
}
@end
-----------------------------------------------------------------------------------------
//
//  main.m
//  封装
#import <Foundation/Foundation.h>
#import "Employee.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        Employee *e=[Employee new];

        NSString * na=[e name];
        NSLog(@"名字为%@",na);
        [e setName:@"iosay"];

        [e setAge:];
        float sa=[e salary];
        NSLog(@"工资为%.2f",sa);
    }
    ;
}

封装

//
//  Car.h

#import <Foundation/Foundation.h>

@interface Car : NSObject
{
    @public
    int _speed;
}
-(void)start;
-(void)stop;
@end
-----------------------------------------------------------------------------------------
//
//  Car.m

#import "Car.h"

@implementation Car
-(void)start
{
    NSLog(@"车已启动,速度为%d",_speed);
}
-(void)stop
{
    NSLog(@"车已熄火");
}
@end

-----------------------------------------------------------------------------------------
//  Person.h
//  P1

#import <Foundation/Foundation.h>
#import "Car.h"
@interface Person : NSObject
-(void)goHome:(Car*)car;
@end
-----------------------------------------------------------------------------------------
//
//  Person.m
//  P1
#import "Person.h"

@implementation Person
-(void)goHome:(Car*)car
{
    [car start];
}
@end
-----------------------------------------------------------------------------------------
//
//  main.m
//  匿名类的使用

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        Person *p=[Person new];
        Car *c= [Car new];
        c->_speed=;
        [c start];
        [Car ;
        [p goHome:[Car new]];
    }
    ;
}

匿名类的使用

//
//  Dog.h

#import <Foundation/Foundation.h>

@interface Dog : NSObject
-(void)run;
@end
-----------------------------------------------------------------------------------------
//
//  Dog.m
//  P1

#import "Dog.h"

@implementation Dog
-(void)run
{
    NSLog(@"-run->狗在跑");
}
@end
-----------------------------------------------------------------------------------------
//
//  Person.h
//  P1

#import <Foundation/Foundation.h>
#import "Dog.h"
@interface Person : NSObject
{
    //关联关系
    @public
    Dog *_dog ;
}
-(void)liuDog:(Dog *)dog;//依赖关系
-(void)liuDog;
@end
----------------------------------------------------------------------------------------
//
//  Person.m

#import "Person.h"

@implementation Person
//依赖关系
-(void)liuDog:(Dog *)dog
{
    [dog run];
}
//关联关系
-(void)liuDog
{
    [_dog run];
}
@end
----------------------------------------------------------------------------------------
//
//  main.m
//  关联和依赖-人遛狗

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        Person * p =[Person new];
        Dog * d1 = [Dog new];
        //[p liuDog:d1];
         p->_dog=d1;
        [p liuDog];
    }
    ;
}

关联和依赖-人遛狗

//
//  Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
-(void)run;
-(void)eat;
+(void)sleep;
+(void)music;
@end
-----------------------------------------------------------------------------------------
//
//  Person.m

#import "Person.h"

@implementation Person
-(void)run
{
    NSLog(@"人在跑");
    [self eat];
    NSLog(@"run:self:%p",self);
}
-(void)eat
{
    NSLog
    (@"人在吃");
}
+(void)sleep
{
    NSLog(@"人在睡");
    [self music];
    NSLog(@"sleep:self:%p",self);
}
+(void)music
{
    NSLog(@"人在听歌");
}
@end
-----------------------------------------------------------------------------------------
//
//  Static.h

#import <Foundation/Foundation.h>

@interface Static : NSObject
-(void)count;
@end
-----------------------------------------------------------------------------------------
//
//  Static.m

#import "Static.h"

@implementation Static
-(void)count
{
    ;
    NSLog(@"count=%d",count);
    count++;
}
@end
-----------------------------------------------------------------------------------------
//
//  main.m
//  self的使用
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Static.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        Person *p=[Person new];
        [p run];
        NSLog(@"当前对象:%p",p);

        NSLog(@"----------------------");
        [Person sleep];
        NSLog(@"当前类Person:%p",[p class]);

        NSLog(@"----------------------");
        Static *s=[Static new];
        [s count];
        [s count];
        [s count];
    }
    ;
}

self的使用

//
//  Child.h

#import "Person.h"

@interface Child : Person
-(void)play;

-(void)show;
@end
-----------------------------------------------------------------------------------------
//
//  Child.m

#import "Child.h"

@implementation Child
-(void)play
{
    NSLog(@"child play");
}
-(void)eat:(NSString *)foodName
{
    NSLog(@"child eat %@",foodName);
}
-(void)run
{
    NSLog(@"child run");
}

-(void)show
{
    _name=@"zhangyu";
}
@end
-----------------------------------------------------------------------------------------
//
//  Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    int age;
    @public
    NSString * _name;
    @private
    float _salary;
    @protected
    float _weight;
}
-(void)setAge:(int)age;
-(int)Age;
-(void)eat:(NSString *)foodName;
-(void)run;
@end
---------------------------------------------------------------------------------------
//
//  Person.m

#import "Person.h"
NSString *blog=@"www.iosyu.com";

@implementation Person
-(void)setAge:(int)age
{
    self->age=age;
}
-(int)Age
{
    return self->age;
}
-(void)eat:(NSString *)foodName
{
    NSLog(@"一个人在吃%@",foodName);
}
-(void)run
{
    NSLog(@"一个人在跑步");

    [self blog];
}
-(void)blog
{
    NSLog(@"博客地址:%@",blog);
}

@end
---------------------------------------------------------------------------------------
//
//  test.h

#import "Child.h"

@interface test : Child

@end
---------------------------------------------------------------------------------------
//
//  test.m

#import "test.h"

@implementation test

@end
---------------------------------------------------------------------------------------
//
//  main.m
//  类的继承

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Child.h"
#import "test.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        Person *p=[Person new];
        [p setAge:];
        NSLog(@"年龄为:%d",[p Age]);
        [p eat:@"苹果"];
        [p run];
        NSLog(@"--------------------------");
        Child *c=[Child new];
        [c setAge:];
        NSLog(@"child年龄为:%d",[c Age]);
        [c eat:@"apple"];
        [c run];
        [c play];
        NSLog(@"--------------------------");
        test *t=[test new];
        [t eat:@"banana"];
    }
    ;
}

类的继承

//
//  Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    int _age;
}
-(void)setAge:(int)age;
-(int)age;
@end
-----------------------------------------------------------------------------------------
//
//  Person.m

#import "Person.h"

@implementation Person

-(void)setAge:(int)age
{
    _age=age;
}
-(int)age
{
    return _age;
}
-(NSString *)description
{
    NSString *str= [NSString stringWithFormat:@"age=%d",_age];
    return str;
}
@end
-----------------------------------------------------------------------------------------
//
//  main.m
//  description方法

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        Person *p= [Person new];
        [p setAge:];
        NSLog(@"age=%d",[p age]);
        NSLog(@"p:%@",p);

        Class c1=[p class];
        NSLog(@"Person:%@",c1);
        NSLog(@"Person:%@",[p class]);
    }
    ;
}

description方法

//  Animal.h

#import <Foundation/Foundation.h>

@interface Animal : NSObject
-(void)run;
@end
-----------------------------------------------------------------------------------------
//
//  Animal.m

#import "Animal.h"

@implementation Animal
-(void)run
{
    NSLog(@"动物在跑");
}
@end
-----------------------------------------------------------------------------------------
//
//  Cat.h

#import "Animal.h"

@interface Cat : Animal

@end
-----------------------------------------------------------------------------------------
//
//  Cat.m
#import "Cat.h"

@implementation Cat
-(void)run
{
    NSLog(@"												

Object-C的更多相关文章

  1. CoreCLR源码探索(一) Object是什么

    .Net程序员们每天都在和Object在打交道 如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" 这个答案是对的 ...

  2. JavaScript Object对象

    目录 1. 介绍:阐述 Object 对象. 2. 构造函数:介绍 Object 对象的构造函数. 3. 实例属性:介绍 Object 对象的实例属性:prototype.constructor等等. ...

  3. javascript之Object.defineProperty的奥妙

    直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...

  4. c# 基础 object ,new操作符,类型转换

    参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...

  5. APEX:对object中数据进行简单处理?

    在Salesforce中,常常要对各种数据进行处理,已满足业务逻辑.本篇文章会介绍如何实现从object获取数据,然后将取得的数据进行一系列简单处理. 第一步:SongName__c 是一个新建的ob ...

  6. 笔记:Memory Notification: Library Cache Object loaded into SGA

    笔记:Memory Notification: Library Cache Object loaded into SGA在警告日志中发现一些这样的警告信息:Mon Nov 21 14:24:22 20 ...

  7. Selenium的PO模式(Page Object Model)[python版]

     Page Object Model 简称POM  普通的测试用例代码: .... #测试用例 def test_login_mail(self): driver = self.driver driv ...

  8. Object是什么

    Object是什么 .Net程序员们每天都在和Object在打交道如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" ...

  9. a different object with the same identifier value was already associated with the session:

    hibernate操作: 实例化两个model类,更新时会提示  a different object with the same identifier value was already assoc ...

  10. CSharpGL - Object Oriented OpenGL in C#

    Object Oriented OpenGL in C#

随机推荐

  1. Apache安装及配置ssl

    目录 1.windows安装 软件准备 安装apache 开启ssl(Https访问) 打开httpd.conf,解除下面配置的注释 查看ssl模块使用哪一个配置文件 配置https虚拟主机 简单配置 ...

  2. SqlServer try catch 捕获不到的一些错误及解决方法(转载)

    测试注意 :①假如系统能捕获异常 ,并且我们自己开启了事务.系统会自动 回滚事务的,但是 我们还是要在catch里面加上 rollback tran的习惯,这样也不会提示重复rollback的错误,这 ...

  3. 终端检测HTTPS服务端

    nscurl --ats-diagnostics --verbose https:ssl.tianwensm.xyz

  4. HBA相关知识

    HBA使用详解: 一般的AIX客户端支持的HBA为Emulex HBA卡和交换机硬件确保连接成功的标志: A. 如果是 Emulex卡,卡上的绿灯常亮,黄灯闪烁. B. 如果是 QLogic卡,卡上的 ...

  5. a biped was detected but cannot be configured properly (Bipe导入Unity 无法正确识别)

    OP stated "I export the biped with 'animation' and 'bake animation' ticked and the correct fram ...

  6. poj 3190 Stall Reservations

    http://poj.org/problem?id=3190 Stall Reservations Time Limit: 1000MS   Memory Limit: 65536K Total Su ...

  7. 【Xpath学习】xpath都不会,说什么你做网站自动化测试的?

    嗯我确实不太会.感觉我写的随笔很渣,不一定对,大家不要被我误导了,最好不要看.我也尽量保证写出来都是对的. 首先这俩给我搞晕了 1. // 不管层级:  相对路径 2. /  care 层级: 表示到 ...

  8. Redis与Memcache的区别

    Redis与Memcache的区别 数据类型:  redis数据类型丰富,支持set liset等类型          memcache支持简单数据类型,需要客户端自己处理复杂对象 持久性: red ...

  9. 移植mbed到目标板

    上一篇我们导出了mbed基本环境到mdk,根据实际目标还需要做些修改.手头的硬件是ebox平台,芯片STM32F103C8T6,调试器jlink,默认使用UART1. 导出时所选择的NUCLEO-F1 ...

  10. 运用node的文件系统模块批量修改文件名

      如果我们需要大批量修改一个文件中的名称,比如,删除文件名中的副本时,就可以借助node的文件系统模块,快捷快速的完成. 首先建立一个js文件(changeName.js),代码如下: // 引入f ...