OBJ-C类和对象学习笔记

=========================================================================
                                     类和对象
============================================================================
类的声明和实现


1.关于类的几个名词





.h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@iterface和@end;


注意:.h中的方法只是做一个生命,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返


回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。


.m:类的实现文件,用于实现.h中生命的方法。类的实现使用关键字@implementation和@end。


------------------------------------------------------------------------------------
方法


方法的声明和实现,都必须以 + 或者 - 开头
+ 表示类方法(静态方法)
- 表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型,不能更改
---------------------------------------------------------------------------------
成员变量(实例变量/属性)


成员变量的常用作用域有3中:


@public 全局都可以访问;
@protected 只能在类内部和子类中访问
@private 只能在类内部访问


=================================================================================


2.类的定义分为两部分:


    1.类的声明(规定当前类的:类名、属性、行为)


        @interface 类名:父类名
           {
            //定义类的属性
           }
            //类的行为
        @end             // @interface和@end要成对出现
 
    2.类的实现(实现具体的行为)
     
        @implementation 类名
          
          //行为的具体实现


        @end




类的实现这段语句不能省略,即使没有具体实现行为的情况下!


==============================================================================


创建一个对象并访问成员变量


1.创建一个对象


在OC中用已经存在的类,如何创建一个对象?


                类名          Car类型的指针变量                 使用类名调用new类方法


                Car         *        car            =            [ Car  new ];


理解方式一:
1.定义了一个Car类型的指针变量;
2.指针变量指向新申请的内存空间;


理解方式二:
用Car类实例化了一个实例对象,对象的名称是car;




[Car new]:做了三件事情
           1.向计算机申请内存空间;
           2.给类中的每一个成员初始化值;
           3.返回新申请的空间的首地址;


------------------------------------------------------------------------------


2.访问成员变量


例:


#import <Foundation/Foundation.h>


@interface Car : NSObject
{
    @public              //使下面的三个成员变量变成全局变量
    int lunzi;
    NSString *color;
    int speed;
}
@end


@implementation Car
@end


int main(int argc, const char * argv[]) {
    @autoreleasepool {
       
        Car * car1 = [Car new];
        car1->color = @"blue";
        car1->lunzi = 3;
        car1->speed = 180;
        
        NSLog(@"%@,%d,%d",car1->color,car1->lunzi,car1->speed);
    }
    return 0;
}


值得注意的是,若要以此法访问成员变量并赋值的话,必须在类的声明中加上@public,使类中的成员变量变为全局变量。


========================================================================================


无参方法声明实现及调用


@interface:Car: NSObject
{
        int lunzi;
        int speed;
        NSString *pp;
}
//行为,车跑的方法
-(void)run;  //定义了一个无参无返回值的方法
-(void)stop;


@end


@implementation Car
//方法具体的实现
-(void)run{


NSLog(@"车跑在乡间的大道上");


}
-(void)stop{


NSLog(@"咯吱,车停了!");


}
@end


------------------------------------------------------------------------------------------


方法的调用


使用对象调用方法就是OC中的消息机制
OC语言中蚕蛹特定的语言调用类或者实例(对象)的方法称为发送消息或方法调用




OC中方法的调用有两种:


1. [类名或者对象名   方法名];


    如:   [car run];           //向car对象发送一条run方法的消息




--------------------------------------------------------------------------------------


OC中的方法分为:对象方法和类方法


对象方法:


          1.对象方法以 - 开头如 -(void)xx;
          2.对象方法只能由对象来调用
          3.对象方法中可以访问当前对象的成员变量
          4.调用格式 [对象名 对象方法名]


类方法:


1.类方法以 + 开头,如 +(void)put;
2.类方法只能由类来调用
3.类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成  员变量。
4.调用格式:[类名 类方法名];


==========================================================================================


有参数的方法的定义和实现


有参方法声明实现及调用


声明,例:


-(double)sumOfNum1:(double)num1 andNum2:(double)num2;


即:
-(返回值类型)方法名1:(参数类型)参数名;    //有一个参数的方法




-(返回值类型)方法名1:(参数类型)参数名(空格)and:(参数类型2)参数名2;   
//有两个参数的方法,此处的方法名为 sum: and:(死记!冒号是方法名的一部分!!!! )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值