iOS学习笔记---oc语言第一天

第一讲 初始类和对象

c语言的超集,允许在oc中使用c语言源代码。编译器兼容c语言程序

 具备完善的面向对象特性

 包含一个运行时系统

 类库丰富

 面向对象编程 oop

 面向对象语言:c++  java   c#

 概念:对象、类、封装、继承、多态等

 面向过程:分析解决问题的步骤,实现函数,依次调用

 面向对象:分析问题组成的对象,协调对象间的联系和通信,解决问题  

 面向对象设计具有良好的可扩展性、可重用性

 类和对象是面向对象的核心

 定义类,创建对象,使用对象

 具有相同特征和行为的事物的抽象    

 对象是类的 实例

 类是对象的类型

 面向对象编程中使用对象完成程序

 开发中:先定义类,在创建对象,然后使用对象

 定义类包含两部分:接口部分和实现部分,  分开写

  1.接口部分:对外声明类的特征和行为

 2.实现部分:对内实现行为

接口部分

接口部分标志:@interface...@end

作用:声明类的实例变量和⽅方法,即特征和⾏行为。

包含内容:类名、父类名、实例变量、方法等
#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    @public
    NSString *_name;
    NSString *_sex;
    NSInteger _num;
    
}
- (void)study;//学习
- (void)sleep;//睡觉
- (void)read;//读书

@end

实现部分

实现部分标志:@implementation...@end

作用:实现方法 即实现类的行为

#import "Student.h"

@implementation Student
- (id)init
{
    _name = @"zhangsan";
    return self;
}
- (void)study;//学习
{
    NSLog(@"%@ go to study",_name);
}
- (void)sleep;//睡觉
{
    NSLog(@"%@ ,it's time to sleep",_name);
}
- (void)read;//读书
{
    NSLog(@"you must read now");
}
@end

类和文件

类:@interface...@end @implementation...@end

⽂文件:.h称为接⼝口⽂文件或头⽂文件,.m称为实现⽂文件。默认设 置如下:

1. 使⽤用类名命名⽂文件。

2. .h⽂文件管理类的接⼝口部分;.m⽂文件管理类的实现部分

⽂文件和类本质没有关系,为了⽅方便管理、实现封装特性

创建对象

创建对象分两步:分配内存空间和初始化。

分配内存空间:根据类中声明的实例变量为对象分配内存,

将所有实例变量置为默认值0,并返回⾸首地址。 初始化:为对象的实例变量设置初始值

分配内存空间:Person * p = [Person alloc];

初始化:p = [p init]; 通常这两部操作需要连写:

Person * p = [[Person alloc] init];

+ (id)alloc; +表⽰示这个⽅方法属于类,只能类执⾏行。id返回值 类型,表⽰示任意类型的对象,即创建好的对象。

- (id)init; -表⽰示这个⽅方法属于对象,只能对象执⾏行。id返回值 类型,表⽰示初始化完成的对象。

初始化

使用对象

指针存储对象的⾸首地址,代指对象。OC中使⽤用指针代指对 象,进⾏行操作。

Person * p = [Person alloc]; 先执⾏行“=”右侧

1. [Person alloc]返回值是对象的⾸首地址,即对象。

2. p是跟对象同类型的指针变量,存储对象⾸首地址,代指对象

int main(int argc, const char * argv[])

{

    Student *zhangsan = [[Student alloc] init];

    [zhangsan sleep];

操作实例变量

实例变量在初始化只做少量设置,后期还需要进⾏行设置。

实例变量区分可⻅见度,共三种。这节课使⽤用public @public:实例变量访问修饰符号(公有)。

@interface Lesson : NSObject
{
//@public//公有的,用public 修饰的变量。可以在任何文件访问
//    @protected//受保护的,仅能在自己类和子类里访问
    @private//私有的,仅能在自己类里访问
    NSString *_name;//实例变量前加下划线(不成文规定)区别其他变量
    NSString *_sex; //string  字符串
    NSInteger _age;
    

 语法细节,注意事项

l  成员变量不能在{}中进行初始化、不能被直接拿出去访问

l  方法不能当做函数一样调用

l  成员变量方法不能用static等关键字修饰,别跟C语言混在一起(暂时忽略)

l  类的实现可用写在main函数的后面,主要在声明后面就行了

l  C函数不能访问OC对象的成员

l  方法只有声明,没有实现(经典错误)

l  方法没有声明,只有实现(编译器警告,但是能调用,OC的弱语法)

l  编译的时候:访问没有的成员变量直接报错,访问没有的方法,只是警告

原文地址:https://www.cnblogs.com/limicheng/p/3803925.html