• 类的声明和实现 oc


    类的声明

    1. 完整地写一个函数:函数的声明和定义(实现)
    2. 完成的写一个类:类的声明和实现;
    3. 类的声明:@interface 类名   @end
    4. 类的声明 :@interface Car @end
    5. 类的实现:@implementation Car  @end;
    6. 类的声明:用来声明对象的属性(也叫成员变量)和行为;类的声明的大括号是用来声明对象的属性;
    7. NSObject让Car这个类具备创建对象的能力;它在Foundation框架中,所以要引入Foundation框架;

     

    #import<Foundation/Foundation.h>
    @interface Car:NSObject   // 其中Car是一个类,它的父类是NSObject
    {
    
        int wheels;//声明对象的属性;对象的属性写在大括号内;里面的属性称为成员变量;成员变量默认会初始化为0;大括号里面只能写属性;不能写行为;
        int speed;
    
    }
    @end
    @implementation Car
    {
    }
    int main()
    {
    //在OC中想执行一些行为就写上[中括号];需要行为执行者和行为名称;利用类来执行某个行为;
    //执行了Car这个类的new行为来创建新对象;
    [Car new];
    }
    
    1. 创建对象就会分配内存;每个对象都有存储空间存放成员变量,都会自动初始化为0;我觉得这跟创建多个对象有关;
    2. OC中只能用指针来间接操作对象
    3. 每个对象通过类创建出来,都会具有类的成员变量;
    4. Car *p = [Car new];定义了一个指向Car类型的对象;p以后是指向Car类型的对象;
    5. [Car new]会创建一个新对象,并且会返回对象本身;(新对象的地址);OC对象的本质就是结构体;
    6. p->wheels =4;//给p所指向对象的wheels属性赋值;
    7. p->speed = 250;//
    8. 成员变量也叫实例变量;对象里面的属性默认是不允许指针直接访问;需要加上@public在前面;
    9. @public可以让外部的指针间接访问对象内部的成员变量(实例变量);
    {
    @public
    int wheels;
    int speed;
    }
    
    1. Car *p2 =[Car new];又创建一个新对象;
    2. .
    3. 给车子加上一些行为(功能),我们c语言一般指的是函数;
    4. 行为也叫方法;=功能
    5. @interface的大括号里面只能写属性;方法写在大括号外面;
    6. 方法的格式:方法名;参数;返回值;和函数类似;方法也是分(声明和实现的);
    7. //只要是OC对象的方法,必须以减号开头;
    8. //OC方法中任何数据类型都必须用小括号()扩住;
    9. //OC方法中的小括号,只能用来扩住数据类型;例如(void)
    10. OC方法和函数不一样;
    11. - (void) run;//类方法的声明;
    12. NSObject是一个类;要调用这个类,需要引入Foundation框架;
    13. %p指的是地址;一个指针的大小是8个字节;
    方法的实现
    1. 类的实现就是写方法的实现;方法的实现就是说清楚方法里面有什么代码;
    2. 如果要执行方法或行为,需要写中括号【】;[p run]给p指向对象发送一条run消息;
    3. 具备创建对象的能力;
        @interface 类名  :NSObject
        {
            成员变量;
            成员变量;
        }
        方法声明;
        方法声明;
        方法声明;
        @end
        @implementation 类名
        -(void)walk
        {
            NSLog(@"走了一段路");
        }
        @end
        int main()
        {
        return 0;
    
        }
    
    1. 每一个对象都会占用存储空间;每次调用类的时候,会将类放到内存中;类从头到尾只占据一份存储空间;
    2. 在使用类创建对象之前,会将类加载进内存;
    3. 每个对象内部默认都会有一个isa指针,这个指针指向这个对象的类;
    4. 通过isa指针,我们可以知道我们可以调用哪些方法;
    5. OC里面的对象不会自动回收的;

    1. @interface就好像暴露在外面的钟表面;
    2. @implementation就号线个隐藏在时钟内部的构造实现;
    3. 常见错误:
    4. 在interface里面声明的成员变量不允许赋值;不能写成static int wheels;
    5. 不能用static修饰成员变量和方法;
    6. 方法的声明必须放mian前面,但是实现不必要;

    方法和函数的区别;

    1. 以 -  开头都是对象的方法; 
    2. 对象方法的声明必须写在@interface和@end之间;
    3. 对象方法只能有对象来调用,因为对象方法只归类或对象所有;
    4. 函数能写在文件中的任意位置(除了@interface和@end之间;);函数归文件所有;
    5. 函数和对象一点关系都没有;函数不能写在@interface里面;
    6. 函数不能通过对象的变量名来范围对象的变量;
    7. 函数可以写在@implementation里面如:
    @implementation Car
    void test()
    {
    NSLog(@"调用了test函数");
    }
    -(void)run
    {
    test();
    NSLog(@"%d个轮子的车跑起来");
    

    结构体在变量的同时才能够赋值;

     
    练习:
    • 学生:成员变量:性别、生日、体重、最喜欢的颜色、狗(体重、毛色、吃、跑);
    • 方法:吃、跑、遛狗(让狗跑)、喂狗(让狗吃)
  • 相关阅读:
    js基础
    装饰模式,代理模式,继承
    Retrofit源码解析
    Android Studio自定义Plugin
    EMV笔记:持卡人认证(CVM)
    阿里代码规范笔记
    文章博客网址收集
    MultiDex解析
    EMV随记(1)
    RSA笔记
  • 原文地址:https://www.cnblogs.com/williamliuwen/p/5368947.html
Copyright © 2020-2023  润新知