#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