——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、类与对象
类是一类事物的统称,是抽象的,拥有相同属性和行为的对象可抽象出一个类。构成元素:事物的名称即类名,属性,行为也可以说是功能。(一般名词都是类,例如坦克发射3颗炮弹轰掉了2架飞机,那坦克,炮弹,飞机是类)
对象是现实世界中各种各样的实体。
例如:人可以称作是类,而有个人叫小二,有个人叫小一,小二就是对象,小一也是一个对象。
总结一个类可以实例化多个对象。
1.类的设计:
1》类名
*类名的第一个字母必须是大写
*不能有下划线
*多个英文单词,用驼峰标示
2》属性
3》行为(功能)
2.植物大战僵尸
1》僵尸
*类名:Zoombie
*属性:life 、speed、goodjili
*行为:walk、bite、die
二、类的声明和实现
.h:类的声明文件,用于声明成员变量、方法,使用关键字@interface和@end。
.m:类的实现文件,用于实现.h中声明的方法,使用关键字@implementation和@end。
类的方法(在c语言中称是函数)
以+,-开头,+表示类方法(静态方法),-表示对象方法(动态方法)
/*
计算器类
方法:
1>返回 π
2》计算某个整数的平方
3》计算两个整数的和
*/
#import <Foundation/Foundation.h>
@interface JiSuanQi : NSObject
//方法名:pi
- (double)pi;
//oc方法中,一个参数对应一个冒号
//方法名:pingfang:(冒号也是方法名的一部分)
- (int)pingfang:(int)num;
//- (int)sum:(int)num1 :(int)num2;
//方法名:sumWithNum1:andNum2:
- (int)sumWithNum1:(int)num1 andNum2 :(int)num2;
@end
@implementation JiSuanQi
- (double)pi
{
return 3.14;
}
- (int)pingfang:(int)num
{
return num * num;
}
- (int)sumWithNum1:(int)num1 andNum2 :(int)num2
{
return num1 + num2;
}
@end
int main()
{
JiSuanQi *p = [JiSuanQi new];
//int a = [p pingfang:10];
int a = [p sumWithNum1:10 andNum2:5];
NSLog(@"%i",a);
return 0;
}
//完整的写一个类:类的声明和实现
#import <Foundation/Foundation.h>
//类的声明(声明对象的属性、行为)
@interface Car : NSOject(目的是 让这个Car 具备创建对象的能力)
{//用来声明对象属性(成员变量,默认会初始化为0)
//@public 可以让外部的指针间接访问对象内部的成员变量
@public
int wheels;
int speed;
}
//方法(行为):方法名、参数、返回值(声明、实现)
//只要是oc对象的方法,必须以减号- 开头
//oc方法中任何数据类型都不必须用小括号()扩住
//oc方法中小括号作用:扩住数据类型
- (void)run;
@end
//2.类的实现
@implementation Car
//方法的实现
- (void)run;
{
NSLog(@"车子跑起来了");
}
@end
int main()
{
//利用类来创建对象,在oc中,想执行一些行为,就写上一个中括号【行为执行者 行为名称】
//执行Car这个类的new行为来创建对象
car *p = [Car new];
car *p2 = [Car new];
//给p所指向的对象的wheels属性赋值
p->wheels = 4;
p->speed = 250;
//给p所指向对象发送一条run消息
[p run];
NSLog(@"车子有%d个轮子,时速位:%dkm/h",p->wheels,p->speed);
return 0;
}
练习
/*
设计一个方法,用和其他车速比较车速,换回成为苏的差距
*/
#import <Foundation/Foundation.h>
@interface Car : NSObject
{
@public
int speed; // 定义成员变量
}
// 类的声明
- (int)compareSpeedWithother:(Car *)other;
@end
@implementation Car
// 类的实现
- (int)compareSpeedWithother:(Car *)other
{
return speed - other->speed;
}
@end
int main()
{
Car *c1 = [Car new];// 定义一个新的对象
c1->speed = 300;// 赋值
Car *c2 = [Car new];// 定义第二个对象
c2->speed = 280; // 赋值
int a = [c1 compareSpeedWithother:c2];
NSLog(@"a=%d",a);
return 0;
}