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;
    }

    对于类方法做以下补充:

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

  • 相关阅读:
    yocto/bitbake 学习资源
    QEMU/KVM学习资源
    ubuntu 中创建和删除用户
    git 重命名本地和远程分支
    Ubuntu 上搭建 FTP 服务器
    gdb 常见用法
    git log 显示与特定文件相关的 commit 信息
    基于 qemu system mode 运行 arm 程序
    基于 qemu user mode 运行 aarch64 程序
    checking in(airport)
  • 原文地址:https://www.cnblogs.com/kinghyt/p/10388895.html
Copyright © 2011-2022 走看看