#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. 简单的js菜单

    <!DOCTYPE html> <html> <head> <title>hovertree</title><base target= ...

  2. Issue 4:分布式的基础性问题

    最近打算聊一聊分布式的基本思想.定了个大致的技术路线. 分布式难点 分片和元数据管理 多副本策略 多副本一致性方案 并发和事务支持

  3. logstash插件

    codec 插件   goeip插件 input { file { path => ["/data/nginx/logs/access.log"] type =>&qu ...

  4. XPath 语法

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. XML 实例文档 我们将在下面的例子中使用这个 XML 文档. & ...

  5. poj 2251 Dungeon Master

    http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  6. cmd光标移动

    ESC:清除当前命令行.F1: 单字符输出上次输入的命令 相当于方向键上的 → 的作用.F2: 可复制字符数量 , 输入上次命令中含有的字符,系统自动删除此字符后的内容.F3: 重新输入前一次输入的命 ...

  7. 25个实用的jQuery技巧和解决方案

    1. 去除页面的右键菜单 $(document).ready(function(){ $(document).bind(“contextmenu”,function(e){returnfalse;}) ...

  8. Windows下USB磁盘开发系列二:枚举系统中所有USB设备

    上篇 <Windows下USB磁盘开发系列一:枚举系统中U盘的盘符>介绍了很简单的获取系统U盘盘符的办法,现在介绍下如何枚举系统中所有USB设备(不光是U盘). 主要调用的API如下: 1 ...

  9. (function(){})()是什么意思?

    JS里面(function(){})()function外面的括号是什么意思? 定义了一个函数,并马上执行这个函数.这是js中常用的方式.好处呢.参考:js 闭包

  10. 170105、MySQL 性能优化的最佳 20+ 条经验

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数 ...