OC类和对象基本知识

类:是对事物行为和特征的抽象 

对象:是类的一个实例 类和对象的概念就是面向对象编程的核心

创建一个实例化:Person *p1 = [[Person alloc] init];   // alloc 在内存上开辟空间 init 对开辟的空间进行初始化操作
alloc 这个方法 是来自于NSObject 这个基类的类方法 指的是开辟空间
init 也是来自于NSobject的方法 给一个初始值
OC里面规定 方法的调用使用[ ] 实际上这是一个发送消息的机制  [reciver(消息的接收者)   message(消息名)];
一般情况下我们新建一个类,类名和创建的类文件名保持一致 并且一个文件里面只放一个类

NSObject类是一个抽象类 Foundation框架下,大多数类都继承与NSObject类
类文件包含连个部分 一 类的接口部分 @interface Person :NSObject  @end结尾     一般写在.h文件中
二 实现部分  @implementation 为关键字 @end结尾  一般写在.m文件中

接口部分放类的特征和行为的声明     花括号中放实例变量,用来阐述类的特征
修饰实例变量的可见度的关键字
@protected 受保护的实例变量 类内可以使用,类外不可以使用(默认情况下的实例变量用@protected)----也是最常用修饰方式
@public 公共的 类内类外都可以使用 — 用的比较少,因为它违背了面向对象封装的特性
@private 私有的 类内可以使用,类外不能使用,与@protected区别就是它修饰的变量不能被子类继承
{
    NSString *_name; // 实例变量 = 类型 + 名字 (一般以下划线开头命名)
    NSString *_gender;
    NSInteger _age;
// NSInteger就是C语言中的long类型的重定义
    CGFloat _height;
// CGFloat就是double
}

- (void)speak; // - 是一个实例方法 ,需要实例去调用(动态方法).
+ (
void)eat; // + 表示这是一个类方法,以后要用类去调用(静态方法).


// 写实例变量的setter跟getter方法.

// setter 方法可以给实例变量设置值 getter 方法可以获得实例变量的值
// 给setter 跟getter 方法命名的时候最好setter 方法以set开头 后面跟上咱们要改变的实例变量
- (
void)setName: (NSString *)name;
// getter 方法的命名: 返回值类型跟实例变量的返回值类型保持一致 后面跟上实例变量的名字
- (NSString *)name;

{   @private
    NSString *_brand;
// 系统内部是使用指针进行操作的,所以字符串类型的需要加 *
    NSString *_color;
    NSInteger _price;
// 非对象类型,不能加*
    CGFloat _speed;
}
// @public 共有的雷内和类外都可以使用实例变量
// @protected 受保护的 类内可以使用,类外无法使用实例变量,如果我们要对实例变量进行取值和赋值,我们可以使用 setter 和 getter 方法 子类会继承父类所有的实例变量和方法,子类可以使用这些实例变量
// @private 类内可以使用,类外无法使用.子类无法继承父类的实例变量.----不常用,它不太符合面向对象思想中 继承 的特性
- (
void)run;
+ (
void)doufeng;


- (
void)setBrand:(NSString *)name;
- (NSString *)brand;

- (
void)setColor:(NSString *)color;
- (NSString *)color;

- (
void)setPrice:(NSInteger)price;
- (NSInteger)price;

- (
void)setSpeed:(CGFloat)speed;
- (CGFloat)speed;

// 如果要传多个参数在方法中,需要用 : 分开, : 后面写上参数的类型和参数的名字
- (
void)setBrand:(NSString *)brand color: (NSString *)color price: (NSInteger)price speed: (CGFloat)speed;

- (
void)makeColor : (NSString *)color makeMoney : (NSInteger)money;


- (void)changeColor:(NSString *)color addMoney:(NSInteger)money;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OC(Objective-C)是一种面向对象的编程语言,它支持在中使用方法和block。方法是在中定义的方法,可以直接通过名来调用,而不需要实例化对象。而block是一种闭包,可以在代码中定义并传递给方法或函数,用于延迟执行特定的逻辑。 在OC中,可以使用方法来创建和操作的实例,例如通过一个工厂方法创建对象,或者在方法中实现一些与相关的逻辑。方法通常使用“+”符号进行声明和实现。 而block可以在方法中作为参数传递,也可以在方法中定义和使用。block可以捕获其所在作用域的变量,可以在方法内部延迟执行一段代码,也可以用于实现回调等功能。block的定义和使用使用“^(){}”语法。 方法和block可以结合使用,例如可以在方法中接受一个block作为参数,并在合适的时机调用该block,以实现一些灵活的逻辑。通过方法和block的组合,可以在OC中实现更加灵活和强大的功能,例如在异步操作中使用block来回调结果,或者在工厂方法中使用block来定制对象的初始化逻辑等。 总而言之,方法和block是OC中的两个重要特性,它们可以分别用于的操作和延迟执行逻辑,也可以结合使用以实现更加灵活的功能。在实际的OC开发中,方法和block通常会被广泛使用,可以帮助开发者更加简洁和灵活地实现代码逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值