Objective-C入门03:类和对象
// 如果要使用 Student,必须先引用
// 因为Student 是我们自己定义的类。所以引入要使用 ""
// 注意 引入头文件就可以了, .m文件不要引入,因为头文件是支配身体的
#import "Student.h"
#import"Car.h"
@interfaceAppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 指针 : * +变量 代表变量是一个指针变量,指针变量带有对象存储的实际内存块区的地址。
// oc的对象初始化
// alloc 方法是NSObject类型的方法,由于Student继承了NSObject类型,
// 所以就拥有了NSObkect类型的一切, 包括 alloc。
// alloc 的 作用 就是告诉 cpu我要一所房子,开内存
// init 对开好的内存块区中存储的对象进行初始化操作。
Student * stu = [[Studentalloc ] init ];
// 打印出 学生对象 的详细信息
[ stu tallWithOthers ];
Car * sf = [[Caralloc ] init ];
[ sfxiaoShi];
returnYES;
}
在 Student.h 里面
// .h 和 .m文件的作用
// 苹果公司为了程序员查看变量声明,方法的声明,
// 原则上希望大家把变量和方法的声明放在 .h 文件里 把方法的实现放在 .m 文件中实现
// 只有放在 .h 文件中的方法,和变量,才可以被别的对象调用。
// 引入系统框架 Foundation框架中包含了所有oc相关的类,只有引入框架,才能使用框架中的类。
// #import<> 引入的时系统框架,苹果提供的类
// #import ""引入的是用户自定义的类
// c语言使用的是 #include < >
// #import 可以避免重复包含。 A引入C框架,B也引入C框架。当A引入B的时候,框架A中是引入两次的
// #import 可以自动取消重复引入的框架,保持永远是引入一次。
#import <Foundation/Foundation.h>
// @interface 声明类的关键词 可以翻译为接口
// Student @interface 关键词后面的就是类 名
// 冒号后面的是父类名
// 所有oc的类都要有一个父类 ,NSObject是 oc中最基础的类
@interface Student :NSObject
{ // 添加一个大括号,写类的成员变量 或者叫 类的属性
// 定义一个整形的变量,用来保存年龄。
// @ private,@protect,@puble, oc默认的是 @protect
// 第一的变量变量名由单词组成,第一个单词首字母要小写,习惯上加一个下划线,表示成员变量
int _age ;
// 定义一个浮点型变量,保存身高
float _height ;
// 定义一个浮点型变量,保存体重
float _weight ;
}
// 类要使用必须创建代表类的对象,也就是说生成一个 Student 类型的变量,我们管着个过程称为类的实例化。
// 类的初始化方法:每个类都必须至少一个初始化方法。
// 符号 -代表方法的类型是 实例方法或者称为 对象方法
// 初始化方法 负责完成对某些变量的赋值。
// init 翻译为初始化
// id 是一个泛类型。可以代表任何类型
- (id ) init ;
// 学生友谊方法,可以告诉别人他的信息
// -号代表对象的方法,是又活着的,在内存中的对象 执行的
- (void )tallWithOthers ;
在 Student.m 里面
// #import "" 是用户自己建的类型
#import "Student.h"
//@implementation 实现的意思,表示我们这个 .m文件 是用于实现Student的。
@implementation Student
// 方法电费实现必须在 @implementation Student 和 @end 之间进行
- (id ) init
{ // self最简单的理解就是代表self所在的 .m文件
// 正确理解是 self 是所在的文件,生成的对象。
// super 代表父类, 这里具体代表的是 NSObject 的对象。
self = [superinit ] ;
// 我们把苹果提供的初始化之后的对象拿过来用,我们还需要做一些我们特有的初始化。
if ( self ) // 当self有值的时候,代表初始化成功了。
{
// 进行本对象的初始化
// 初始化 年龄 --23岁
_age = 23;
// 身高
_height = 172;
// 体重
_weight = 130;
}
returnself ;
}
-(void)tallWithOthers
{
NSLog(@"我的身高是%f ,体重是%f ,年龄是%d " ,_height ,_weight ,_age ) ;
}
在 Car.h 里面
@interface Car : NSObject
{
int _shudu;
}
- (id)init;
- (void)xiaoShi;
在 Car.m 里面
#import "Car.h"
@implementation Car
- (id )init
{
self = [superinit ] ;
if(self )
{
_shudu = 20 ;
}
return self ;
}
- (void )xiaoShi
{
NSInteger time =1000 /_shudu ;
NSLog(@"需要的时间是%ld" , (long )time ) ;
}