zoukankan      html  css  js  c++  java
  • oc基础:类的定义

    #import <Foundation/Foundation.h>
    //类的声明
    NS_ASSUME_NONNULL_BEGIN
    //interface 类的开始 bread 类名 NSObject 父类
    @interface Bread : NSObject{
        //添加成员变量(属性) 外部无法直接访问
        NSString *brand;
        NSString *flavor;
        //类是通过属性来保存变量的
    }
    
    //如果外部需要访问成员变量 必须提供相应的方法或行为
    //访问;设置 set 获取 get
    /*
     方法分两种:
     1.实例方法 -
     只能用对象去调用(必须实例化这个类 然后用对象去调用)
     2.类方法 +
     不需要实例化对象,用这个类本身就可以调用 :例如:[Bread alloc];alloc就是类方法
     
     */
    -(void)setBrand: (NSString *)aBrand;//括号内是返回值类型 冒号后是参数类型和参数名
    -(NSString *)getBrand;//没有参数则直接结束
    -(void)setFlavor:(NSString *)aflavor;
    -(NSString *)getfFlavor;
    
    //合并为一个方法
    -(void)setBrand:(NSString *)abrand andFlavor:(NSString *)aFlavor;
    
    //在这之间声明属性方法
    @end//类的结束
    
    NS_ASSUME_NONNULL_END
    #import "Bread.h"//需要实现的类所在的头文件
    //类的实现
    @implementation Bread//实现哪个类
    //(方法的具体实现)
    
    
    
    
    - (void)setBrand:(NSString *)aBrand{
        //保存外部传递过来的值
        brand =  aBrand;
    }
    
    -(NSString *)getBrand{
        return brand;
    }
    
    -(void)setFlavor:(NSString *)aflavor{
        flavor = aflavor;
    }
    
    -(NSString *)getfFlavor{
        return flavor;
    }
    
    
    
    
    
    
    
    




    对象的创建和使用:

    #import <Foundation/Foundation.h>
    #import "Bread.h"//在使用一个类之前 先导入
    /*
     类:一类事物的高度抽象 不实际存在(没有内存)
     对象:一个类的具体实现 实际存在 (有内存)
     */
    
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
        //实例化bread
            //创建bread的一个具体对象
            //1.
            Bread *bd = [Bread new];//与2,3等价
            //2.
            Bread *bd4 = [[Bread alloc] init];
            //或者3.
             Bread *bd2= [Bread alloc];//(先分配内存)
        Bread *bd3 = [bd2 init];//(初始化)
            
            [ bd4 setBrand:@"达利园"];
            [bd4 setFlavor:@"蒜泥味"];
            
            NSString *brand =[bd4 getBrand];
            NSLog(@"%@",brand);
            
            NSLog(@"%@",[bd4 getBrand]);
            
        }
        return 0;
    }

    对于类方法做以下补充:

    类方法的实现里面 不能调用该类的变量
    也不能直接调用类的实例方法 因为没有具体的对象 是抽象的

  • 相关阅读:
    git使用
    Git常用命令梳理
    git fetch 更新远程代码到本地仓库
    理解RESTful架构
    漫谈五种IO模型(主讲IO多路复用)
    python 单下划线/双下划线使用总结
    闰秒导致MySQL服务器的CPU sys过高
    闰秒问题
    Java线上应用故障排查之一:高CPU占用
    ZooKeeper安装与配置
  • 原文地址:https://www.cnblogs.com/kinghyt/p/10388895.html
Copyright © 2011-2022 走看看