黑马程序员———OC第一天(类和对象)

本文介绍了Android开发、Java培训、iOS培训、.NET培训等内容,并详细解释了OC语言的基本概念,包括关键字、字符串表示、数据类型、面向对象思想、方法设计及创建类和对象的过程。同时,对比了面向过程和面向对象思想的区别,并提供了创建类和方法的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- Android培训Java培训IOS培训.NET培训 期待与您交流! ----------


一、OC简介

1.OC是在C语言的基础上,增加了一层最小的面向对象语法

2.完全兼容C语言

3.可以再OC代码中混入C语言代码,甚至是C++代码

对于2,3 两点如何理解呢?

新建一个.m的文件(注:OC文件的后缀为.m)在这个.m中你可以用你再学习C语言中学过的语法和知识,编译、链接、运行完全没有问题。

// 完全没有问题
#include <stdio.h>
int main()
{
    printf("第1个OC程序\n");
    return 0;
}

不过如果你在一个.c的文件中,写上一大推OC中用到得知识,就会报错,这一点需要注意。所以第2点可以这么理解,OC是完全兼容C语言的,但是C语言不兼容OC。

二、OC语法预览

1.关键字

OC中关键字基本都是以@开头的比方说:@interface,@end,@implementation,@public 等等

2.字符串以@开头

比如@"Hello"是OC字符串,而"Hello"是C语言中的字符串

3.数据类型

就基本类型而言,OC比C多了一个BOOL类型,复杂数据类型,如结构体、枚举,C语言中有的OC中也有。

4.NSLog与printf的区别

NSLog是OC中的输出函数,printf是C语言中的输出函数。首先就他们的大小写就有区别,NSLog前3个字母大写,printf都是小写。第二点就是NSLog自动换行,而printf换行得使用'\n'。第三点就是NSLog的参数是OC字符串得加上@,printf中的字符串是C语言字符串。最后一点就是是用NSLog需要#import <Foundation/Foundation.h>,使用printf需要 #include <stdio.h>。

5.#import的作用

a)跟#include 一样,是用来拷贝某个文件的内荣

b)可以自动防止文件内容被拷贝多次,也就是头文件中不用加入下面的预处理指令了

#ifndef  _STDIO_H
#define _STDIO_H
#endif

三、面向对象和面向过程思想

1)区别分析

a)面向过程关注的是解决问题需要哪些步骤,面向对象关注的是解决问题需要哪些对象

比如有这么个例子: 以用电脑听歌为例子

1⃣️面向过程实现的是: 先打开电脑,然后播放电脑中的歌曲,最后关闭电脑

2⃣️面向对象实现的是:对于一个电脑对象,调用它的开机,播放歌曲,关机方法


2)需要设计哪些类,如何设计类

1.类的设计只关心(类名,属性,行为)

2.一般名词都是类

3.拥有相同(或者类似)属性和行为的对象都可以抽象出一个类


3)OC中创建类和对象

// 类的声明
@interface Car : NSObject
{
@public
    int wheels; // 多少个轮子
    int speed; // 时速
}
// 方法的定义
- (void)run;
@end
// 类的实现
@implementation Car

// 方法的实现
- (void) run
{
    NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed);
}
@end
1.类的声明用到了关键字@interface、@end,类的实现用到了关键字@implementation、@end(注:@end不能省)。

2.一般都是通过指针来间接访问一个对象,创建一个对象的方法是[类名  new]

3.@interface的大括号{}中声明类的成员变量(实例变量)默认值为0,跟C语言中的全局变量一样。

4.@public可以让成员变量被外界访问

5.加上:NSObject的目的是让Car类具备创建对象的能力(其实:是继承的意思,NSObject也是一个类,基类)

四、方法

1)不带参数的方法

a.设计一个返回PI的方法

// 方法声明
- (double)pi;
// 方法实现
- (double)pi
{
    return 3.14;
}


2)带参数的方法

a.设计一个计算平方的方法

// 方法声明
- (double)square:(double)number;
// 方法实现
- (double)square:(double)number
{
    return number * number;
}

b.设计一个计算和的方法
// 方法声明
- (double)sumOfNum1:(double)num1 andNum2:(double)num2;
// 方法实现
- (double)sumOfNum1:(double)num1 andNum2:(double)num2
{
    return num1 + num2;
}
3)总结

a.OC中方法不允许同名

b.:也是方法的一部分

c.有多少个参数就有多少个:

d.从第二个参数开始冒号之前要加上对应的参数名作为描述

e.方法中的小括号()是用来将类型括起来的

f.对象方法得用-开头,类方法得用+开头




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值