人生几何?

OC基础-类 、方法(二)

2021-08-26  本文已影响0人  浮华_du

一.类

类的声明:

@interface 类名 : NSObject
{
 这类事物具有的共同的特征,将它们定义为变量
}
功能就是一个方法,将方法的声明写在这里
@end

类的实现:

@implementation 类名
将方法的实现写在这里
@end

类的对象的创建和使用

类名 *对象名 = [类名 new];

默认情况下,对象的属性是不允许被外界直接访问的,如果允许对象的属性可以被外界访问,那么就需要在声明属性的时候加上一个@public关键字。
例如:

@interface Person : NSObject
{
 @public
 NSString *_name;
 int _age;
 float _height;
}

@end

访问

对象名->属性名 = 值;
对象名->属性名;//(一般使用)
(*对象名).属性名;

完整例子

#import <Foundation/Foundation.h>
@interface Student : NSObject
{
 @public
 NSString *_name;
 int _age;
 int _Chinese;
 int _Math;
 int _English;
}
@end

@implementation Student
@end


int main(int argc, const char * argv[]) {
    
    Student *s1 = [Student new];
    s1->_name = @"旺仔";
    s1->_age = 5;
    s1->_Chinese = 90;
    s1->_Math = 80;
    s1->_English = 90;

    NSLog(@"Name:%@,Age:%d,Chinese:%d,Math:%d,English:%d",
     s1->_name,
     s1->_age,
     s1->_Chinese,
     s1->_Math,
     s1->_English
    );
    return 0;
}
//2021-07-21 10:12:46.193138+0800 TestOc[6732:66503] Name:旺仔,Age:5,Chinese:90,Math:80,English:90

二.方法 (减号-)

1.无参数方法

无参数的方法的声明:

位置:在@interface的大括号的外面
语法:

-(返回值类型)方法名称;
-(void)run;//表示声明了一个无返回值并且无参数的方法,方法的名字叫run,这个需要写在@interface的带括号外面,与@end的里面

无参数的方法的实现:

位置:在@implementation之中实现
语法:

-(返回值类型)方法名称
{
方法实现的代码;
}

@implementation Person
-(void)run
{
 NSLog(@“I’m running!”);
}
@end

无参数的方法的调用:

[对象名 方法名];
Person *p1 = [Person new];
[p1 run];

2.有参数方法(同无参),只是增加了形参

3.直接看完整例子


#import <Foundation/Foundation.h>
@interface Phone : NSObject
{
 @public
 NSString *_brand;
 NSString *_color;
 float _weight;
 NSString *_size;
}
-(void)show;
-(void)call:(int)phoneNumber;
-(void)sendMessage:(int)phoneNumber and:(NSString *)message;
@end

@implementation Phone

-(void)show
{
 NSLog(@"本机信息:%@牌 颜色:%@ 重量:%.2fg 尺寸:%@",
_brand,
_color,
_weight,
_size);
}
-(void)call:(int)phoneNumber
{
 NSLog(@"正在拨通%d的电话……",phoneNumber);
}
-(void)sendMessage:(int)phoneNumber and:(NSString *)message
{
 NSLog(@"已将短信内容:%@ 发送给%d",message,phoneNumber);
}

@end

int main(int argc, const char * argv[])
{
 @autoreleasepool
 {
 Phone *phone1 = [Phone new];
 phone1->_brand = @"Apple";
 phone1->_color = @"深空灰";
 phone1->_weight = 237.0f;
 phone1->_size = @"6.1英寸";
 
 [phone1 show];
 [phone1 call:987654321];
 [phone1 sendMessage:987654321 and:@"我晚点到!"];
 }
 return 0;
}
//2021-07-21 10:30:16.707200+0800 TestOc[8980:86732] 本机信息:Apple牌 颜色:深空灰 重量:237.00g 尺寸:6.1英寸
//2021-07-21 10:30:16.707539+0800 TestOc[8980:86732] 正在拨通987654321的电话……
//2021-07-21 10:30:16.707589+0800 TestOc[8980:86732] 已将短信内容:我晚点到! 发送给987654321

三.类方法(加号+)

声明:

+(void)sayHi;

调用:

[类名 类方法名];
注意:
上一篇 下一篇

猜你喜欢

热点阅读