oc5--方法

672530440 672530440     2022-09-16     267

关键词:

//  main.m
//  第一个OC类-方法2
#import <Foundation/Foundation.h>

// 1.编写类的声明
@interface Iphone : NSObject
{
@public
    float _model;
    int _cpu;
    double _size;
    int _color;
}
// 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;因为OC方法中的()有特殊的用途, OC方法中的()是用来扩住数据类型的
- (void)about;
// 有返回值没有参数的, 读取短信
- (char *)loadMessage;
// 有返回值有参数的, 打电话
// int signal(int number);
// 注意: 当前这个有参数的方法它的方法名称是  signal: ,有没有冒号是2个方法,冒号也是方法名称的一部分
- (int)signal:(int)number;
- (int)signal;
// 有返回值并且有多个参数的, 发短信
// int sendMessage(int number, char *content);
// 下面这个方法的方法名称是 sendMessage::
- (int)sendMessage:(int)number :(char *)content;
// 为了提高我们的阅读性, OC方法允许我们给每个参数添加一个标签来说明当前参数的含义,注意: 标签也是方法名的一部分
// 方法名是 sendMessageWithNumber:andContent:   (参数数据类型用括号括起来,参数的数据类型前面加冒号)
- (int)sendMessageWithNumber:(int)number andContent:(char *)content;
@end

// 2.编写类的实现
@implementation Iphone
// 行为的实现
- (void)about
{
    // 对象方法中访问该对象的属性, 直接写_属性名称,因为这里没有对象,
    NSLog(@"型号 = %f, cpu = %i, 尺寸= %f, 颜色 = %i", _model, _cpu, _size, _color);
}
- (char *)loadMessage
{
    char * content = "老婆我们家我做主";
    return content;
//    return "wife is god";  返回字符串是char *,
}
- (int)signal:(int)number
{
    NSLog(@"打电话给%i", number);
    return 1;
}
- (int)sendMessage:(int)number :(char *)content{
    return 1;
}
- (int)sendMessageWithNumber:(int)number andContent:(char *)content
{
    NSLog(@"发短信给%i, 内容是%s", number, content);
    return 1;
}
@end

int main(int argc, const char * argv[]) {
    // 1.通过类创建对象,堆中,栈中内存函数结束是释放,堆中要自己释放。p是堆中字节最小的地址。p称之为Ipone的对象。
    Iphone *p = [Iphone new];
    // 2.修改对象的属性
    p->_size = 3.5;
    p->_color = 0;
    p->_model = 4;
    p->_cpu = 1;
    // 3.获取对象的属性
    NSLog(@"size = %f, color = %i, model = %f, cpu = %i", p->_size, p->_color, p->_model, p->_cpu);
    // 4.如果给对象发消息(如果调用对象的方法)
    [p  about];
    // [对象 消息名称(方法名称)]
    // 注意: OC中的NSLog对C语言的字符串支持不是很好, 如果返回的是中文的C语言字符串可能输出的是乱码, 也有可能什么都不输出
    char *content = [p loadMessage];
    NSLog(@"content = %s", content);
    [p signal:13838338];
    [p sendMessage:1383838333 :"luck"];
    [p sendMessageWithNumber:123456789 andContent:"hi"];
    return 0;
}

 

类方法和实例方法

类中包含成员变量和成员方法,成员方法又包括构造方法,类方法,实例方法。用关键字static修饰的方法称为类方法,又称静态方法。不用static修饰的方法称为实例方法,又称为对象方法。类中的访问规则:·类方法只能操作类... 查看详情

虚方法抽象方法接口方法

1.virtual方法(虚方法)virtual方法用于在基类中修饰子类,会遇到下面2种情况:情况1:子类没有重写,则子类调用的是基类的方法。情况2:子类重写了,则子类调用的重写的方法。2.abstract方法(抽象方法)抽象方法只是可以在抽... 查看详情

构造方法

构造方法构造方法也就是调用方法,作用是为对象的属性赋初始值。如果没有定义构造方法,则会由一个默认的无参数的构造方法。如果显示定义了构造方法,则没有默认构造方法。构造方法可以重载。只能用new方法名()的形... 查看详情

ios类方法和实例方法的区别

参考技术A类方法:也被称为静态方法,指static关键字修饰的方法。此类方法属于类本身的方法,不属于类的某一个实例(对象)。在类方法中不可以直接使用实例变量。其调用方式有三种,可直接调用、类名、方法名、对象名... 查看详情

java:方法重载和方法覆盖的异同

方法重载和方法覆盖的相同点:都要求方法名相同;都可以用于抽象方法和非抽象方法之间。方法重载和方法覆盖的不同点:方法覆盖要求参数签名必须一致,而方法重载则要求参数签名必须不一致;方法覆盖要求返回类型必须... 查看详情

模板方法

在模板模式中,一个抽象类公开定义了执行它的方法/模板。模板方法定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改不一个算法的结构,即可重定义该算法的某些特定步骤。抽象模板是一... 查看详情

static方法

1静态方法只能调用静态属性或静态方法,调用非静态的会报错2静态方法调用静态属性或方法时,使用的是  类名.静态属性  或  类名.静态方法3静态方法调用非静态属性或方法时,使用的是  对象名.属性  或  对... 查看详情

6.静态方法和实例方法

1、定义  (1)静态方法:有static关键字即为静态方法;  作用:简化编程,方便调用。  (2)实例方法:不含static关键字的即为实例方法。即使用实例对象调用的方法;2、方法调用(实例)  (1)实例方法可以使用... 查看详情

静态方法类方法属性方法

一、静态方法 1.1、定义   在类中的方法前面通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法classPerson(object):def__init__(self,name):self.name=name@staticmethoddefspeak():print(‘someoneisspeakingchinese.‘)#静态方法在类中也不... 查看详情

objc中的类方法和实例方法有什么本质区别和联系

类方法:类方法是属于类对象的类方法只能通过类对象调用类方法中的self是类对象类方法可以调用其他的类方法类方法中不能访问成员变量类方法中不能直接调用对象方法类方法是存储在元类对象的方法缓存中实例方法:实例... 查看详情

面向对象day08:静态方法类方法属性方法

本节内容概述静态方法类方法属性方法总结一、概述  前面我们已经讲解了关于类的很多东西,今天讲讲类的另外的特性:静态方法(staticmethod)、类方法(classmethod)、属性方法(property)二、静态方法2.1定义说明:在方法名前加... 查看详情

虚方法与抽象方法

虚方法:1、virtual方法表示此方法可以被重写,也就是说这个方法具有多态.父类中的方法是通用方法,可以在子类中重写以重新规定方法逻辑.2、virtual方法可以直接使用,和普通方法一样3、不是必须重写的.子类可以使用base.方法的... 查看详情

重写方法,重载方法,虚方法和抽象方法的使用(代码片段)

重写方法,重载方法,虚方法和抽象方法。       重写:指子类重新实现父类的某些方法,以实现一些新的功能。重写的关键字是override。并且重写的方法其签名是相同的。    重载:指允... 查看详情

第六堂:方法

  在Java中,方法也就是我们曾在C语言中使用过的函数。所以,在Java中我们自己也可以创建自己的方法,即自己的类库。  与其他语言不同,Java中存在方法调用栈,新的使用的方法会存在方法调用栈的顶端,新的方法会先... 查看详情

方法重载和方法重写

一、C#语法规则:方法重载:同一个类中,方法名相同,参数(类型或数量)不同,方法体不同;方法重写:不同的类中,方法名相同,参数(类型和数量)相同,方法体不同;关键字:vatiral(标注需要被重写的方法)、override(标注用于重... 查看详情

java基础-什么是方法,方法的定义和调用,方法的重载,方法的内存(代码片段)

一、什么是方法方法method是程序中最小的执行单元。在实际开发中,可以将重复的代码、具有独立功能的代码抽取到方法中,这样可以提高代码的复用性和可维护性。二、方法的定义(打包)和调用注意:方法要写在main主方法... 查看详情

js中类方法对象方法原型方法

1、对象方法:包括构造函数中的方法以及构造函数原型上面的方法;2、类方法:其实这里的类就是一个函数。在js中由于函数也是一个对象,所以可以为函数添加属性以及方法,这种方法在node中用的比较多;3、原型方法:一般... 查看详情

sleep()方法和wait()方法的区别?sleep()方法和yield()方法的区别?

sleep()方法和wait()方法的区别?sleep方法是Thread的静态方法,wait方法是Object类的普通方法sleep方法不释放同步锁,wait方法释放同步锁(执行notify方法唤醒wait的线程时是不释放同步锁的)wait方法用于线程间通信,而sleep方法用于短暂的... 查看详情