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

对于类方法做以下补充:

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

原文地址:https://www.cnblogs.com/kinghyt/p/10388895.html