IOS开发---OC语言-③类的设计和简单练习
来源:互联网 发布:邪恶网站源码 编辑:程序博客网 时间:2024/06/05 21:53
类的设计:
1> 类名
* 类名的第一个字母必须是大写
* 不能有下划线* 多个英文单词,用驼峰标识
2> 属性
3> 行为(功能)
练习1
/*
类名:Car
属性:轮胎个数、时速(速度)
行为:跑
*/
// 因为使用了NSObject
#import <Foundation/Foundation.h>
// 完整地写一个函数:函数的声明和定义(实现)
// 完整地写一个类:类的声明和实现
// 1.类的声明
// 声明对象的属性、行为
// : NSObject 目的是:让Car这个类具备创建对象的能力
@interface Car : NSObject
{// 用来声明对象属性(实例变量\成员变量,默认会初始化为0)
// @public可以让外部的指针间接访问对象内部的成员变量
@public
int wheels; // 轮胎个数
int speed; // 时速(xxkm/h)
}
// 方法(行为):方法名、参数、返回值(声明、实现)
// 只要是OC对象的方法,必须以减号 - 开头
// OC方法中任何数据类型都必须用小括号()扩住
// OC方法中的小括号():括住数据类型
- (void)run;
@end
// 2.类的实现
// 用来实现@inteface中声明的方法
@implementation Car
// 方法的实现(说清楚方法里面有什么代码)
- (void)run
{
NSLog(@"车子跑起来了");
}
@end
int main()
{
// 在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]
// 利用类来创建对象
// 执行了Car这个类的new行为来创建新对象
// 定义了一个指针变量p,p将来指向的是Car类型的对象
// [Car new]每次都会创建出一个新对象,并且会返回新对象本身(新对象的地址)
Car *p = [Car new];
Car *p2 = [Car new];
p2->wheels = 5;
p2->speed = 300;
[p2 run];
// 给p所指向对象的wheels属性赋值
p->wheels = 4;
p->speed = 250;
// 给p所指向对象发送一条run消息
[p run];
NSLog(@"车子有%d个轮子,时速位:%dkm/h", p->wheels, p2->speed);
return 0;}
练习2
/*
人
类名:Person
属性(成员变量\实例变量):体重、年龄
行为(方法):走路、吃
*/
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public
int age;
double weight;
}
- (void)walk;
- (void)eat;
@end
// 2.类的实现
@implementation Person
// 实现@interface中声明的方法
- (void)walk
{
NSLog(@"%d岁、%f公斤的人走了一段路", age, weight);
}
- (void)eat
{
NSLog(@"%d岁、%f公斤的人在吃东西", age, weight);
}
@end
int main()
{
// 在使用类创建对象之前,会将类加载进内存
Person *p = [Person new];
p->age = 20;
p->weight = 40;
[p eat];
[p walk];
Person *p2 = [Person new];
p2->age = 30;
p2->weight = 60;
[p2 eat];
[p2 walk];
/*
Person *p2 = [Person new];
p2->age = 30;
p2->weight = 50;
p = p2;
p->age = 40;
[p2 walk];
*/
/*
Person *p = [Person new];
p->age = 20;
Person *p2 = [Person new];
p2->weight = 50.0;
[p walk];
*/
/*
Person *p = [Person new];
p->age = 20;
p->weight = 50.0;
[p walk];
Person *p2 = [Person new];
p2->age = 30;
p2->weight = 60.0;
[p2 walk];
*/
return 0;
}
原理图片
注意:(1)类中存的是方法(2)每个对象中都有一个isa指针(3)函数可以写在任意地方(@interface和@end之间除外)
- IOS开发---OC语言-③类的设计和简单练习
- IOS开发---OC语言-㉒@property模型设计练习
- IOS开发---OC语言-④类的合理设计
- IOS开发---OC语言-⑫点和圆的综合练习
- iOS开发 兼容OC和C语言
- IOS开发---OC语言-⑯类的本质
- IOS开发---OC语言-㉓类的循环引用
- iOS 开发 OC编程 属性和字符串练习
- IOS开发---OC语言-⑦类方法
- OC学习笔记之OC类的设计练习实战
- OC简单知识的练习
- iOS开发--OC篇--OC语言简介
- ios开发-OC类方法和self关键字的学习
- iOS开发之OC类和对象
- IOS 开发 OC编程 类和对象
- OC类的练习
- IOS开发---OC语言-⑰decription的使用
- IOS开发---OC语言-⑱SEL的使用
- Linux tgtadm: Setup iSCSI Target ( SAN )
- 1088. Rational Arithmetic (20)
- Android中的沙箱模型
- 使 VC2013 编写的程序运行在其它电脑上
- myeclipse 和 eclipse ide for javaee 下的java web项目目录结构对比
- IOS开发---OC语言-③类的设计和简单练习
- 提供给开发者 10 款最好的 Python IDE
- 帧中继的本地管理接口类型(LMI)
- 桶排序及C语言实现
- 第十四周项目——oj平台一——求矩阵对角线元素之和
- XMPP客户端库Smack 4.0.6版开发之四
- 保存应用程序的配置信息
- 阿里云RDS文档概述——数据库管理
- 黑马程序员---OC类的本质