黑马程序员------object-c面相对象_类的实例化

知识要点:isa,成员变量,函数

  • 在java里有8个基础数据类型,byte,short,int,long,float,double,char,boolean还有就是引用类型,这里引用类型就是指实例化(new)出的类。
  • 在c里有6个基础数据类型,short,int,long,float,double,char
  • 类:是一种结构,表示对象的类型。
  • 对象:它包含值和指向其类的隐藏指针。
  • 实例:“对像”的另一种称呼。

    下面是根据视频练习的代码:

    #import <Foundation/Foundation.h>
    typedef enum {
        red,blue,green
    }DogColor;
    
    typedef enum{
        male,femle
    }Sex;
    
    @interface Dog: NSObject
    {
        @public
        DogColor dogColor;
        int speed;
        double weight;
        Sex sex;
    }
    
    -(void) eat;
    -(void) wang;
    -(void) run;
    -(BOOL) isSameColor:(Dog *) dog;
    -(int) compareSpeed:(Dog *) dog;
    @end
    
    @implementation Dog
    - (void) eat
    {
        weight += 0.5;
        NSLog(@"狗吃完长肉,%f",weight);
    }
    - (void) wang
    {
        
    }
    -(void) run
    {
        weight -= 0.5;
        NSLog(@"狗跑完减肉,%f",weight);
    }
    - (BOOL) isSameColor:(Dog *) dog
    {
        
        return dogColor == dog->dogColor;
    }
    -(int) compareSpeed:(Dog *) dog
    {
        return speed - dog->speed;
    }
    
    void testDog()
    {
        Dog *dog1 = [Dog new];
        dog1->weight = 10;
        dog1->speed = 100;
        dog1->dogColor = red;
        
        Dog *dog2 = [Dog new];
        dog2->weight = 100;
        dog2->speed = 80;
        dog2->dogColor = red;
        NSLog(@"The dog is same color?%i",[dog1 isSameColor:dog2]);
        NSLog(@"The speed comapre: %d",[dog1 compareSpeed:dog2]);
    }
    int main()
    {
        testDog();
        return 0;
    }

    类的方法

    1.-实例函数,对象的方法

    2.对象的方法声明在@interface和@end之间

    3.对象的方法只能用对象来调用

    4.对象方法只能由对象调用

    函数

    1.函数能写在除@interface和@end之间的任意位置

    2.函数对象不依赖于对象

    3.函数内部不能直接通过成员变量名访问某个对象的成员变量

    2.+成员函数

    语法补充:

      NSLog(@"字符串:%@",name);

      NSLog(@"字符:%c",a);

      NSLog(@"布尔值:%i",isShow);
      NSLog(@"整形:%i",i);
      NSLog(@"单精度浮点数: %f",f);
      NSLog(@"精度浮点数,且只保留两位小数:%.2f",f);
      NSLog(@"科学技术法:%e",f);
      NSLog(@"科学技术法(用最简短的方式):%g",f);

    ISA

    任何一个对象继承或者间接继承NSObject的类,它的实例对象都会有一个isa指针,指向类的对象(已经实例实例化),这个里面包括了变量,方法,遵守的协议等(用于存放类的数据)。

    详解oc的对象模型(http://blog.devtang.com/blog/2013/10/15/objective-c-object-model/)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值