• 02-OC方法、属性


    目录:

    一、方法

    二、实例变量

    三、属性(点语法)

    四、初始化方法(自定义构造方法)

    回到顶部

    一、方法

    1 函数与方法有什么区别?

    函数只是一个程序的代码段,与类无关。

    方法,类的一部分,代表对象可以干什么,

    正常来讲,类必须实例化,方法才可以使用,实例方法,调用方法时,也叫做向对象发送消息。

    2 语法格式与函数非常相似,但截然不同,使用方法时,在.h文件中声明,在.m文件中实现。

    ·无参的方法

    -(返回值类型)方法名;

    ·有1个参数的方法

    -(返回值类型)方法名:(参数类型)参数名;

    ·有多个参数的方法

    -(返回值类型)方法名:(参数1类型)参数名1 : (参数2类型)参数名2 :(参数n类型)参数名n ...;

    注:":"号也是方法名的一部分

    练习:给Student类定义一个方法,分别传人信息,int age、char gender、double salary信息,并输出。

    ·有多个参数的方法(推荐写法)

    -(返回值类型)部分方法名:(参数1类型)参数名1部分方法名2: (参数2类型)参数名2 部分方法名n:(参数n类型)参数名n ...;

    部分方法名起到提示作用,并不影响程序的执行。

    回到顶部

    二、实例变量

    1 一个对象会有自己独特的 数据和别的对象不同,这些数据会保存在特殊的变量中,这种变量就叫实例变量。类的每个实例对象都有一份。

    2 用一个类,创建出一个对象,那么我们就说这个对象就是此类的实例,一个类可以有很多实例,每一个实例都有

    3 实例变量的声明,可以放在.h文件中,也可以放在.m文件中,实例变量默认是私有的,只要当前对象才可以访问。

    4 方法也是一样,放在.h中声明,就是公有方法。

    方法在.h文件中没有声明,就是私有方法,是不合法的。

    练习:给Student类定义实例变量int age、char gender、double salary信息,赋值并输出。定义一个方法printInfo输出所有实例变量的值。

    回到顶部

    三、属性(点语法)

    1 在OC中属性提供了setter和getter方法,本质上属性其实就是方法,而属性的值是由实例变量来保存。

    2 属性的本质由三个部分组成:

    1)保存属性值的实例变量;

    2)setter和getter方法的声明

    setter方法:

    方法名:set+属性名并首字母大写+:+和属性类型一样的参数,无返回值。

    标准写法:-(void)setAge:(int)age;

    getter方法:方法名和属性名一样,没有参数,返回值类型和属性类型一样。

    标准写法:-(int)age;

    3)setter和getter方法的实现

    setter方法的实现主要用来给属性赋值 的

    getter方法的实现主要用来读取属性值的

    练习:(使用属性值赋值)给Student类定义实例变量int age、char gender、double salary信息,赋值并输出。定义一个方法printInfo输出所有实例变量的值。

    3 声明式属性

    在.h中@property int age;//int属性类型age属性(方法)名,自动生成了setter和getter声明

    在.m中@synthesize age = _age;将属性与实例变量关联在一起。

    属性的使用:

    引用.属性 = 值;=>自动调用setter方法

    stu.age = 18;

    变量 = 引用.属性;=>自动调用getter方法

    int age = stu.age;

    4 IOS5.0以后,属性的声明简化了,省去了实例变量。

    在.h中@property int age;自动生成实例变量名为_属性名的实例变量。

    5 IOS6.0开始,声明式属性又简化,.m文件中的@synthesize age = _age;省略

    练习:创建一个point类,有横坐标x,纵坐标y,能显示位置(show方法),创建两个位置并显示。

    回到顶部

    四、初始化方法(自定义构造方法)

    1 初始化方法是实例方法,用来初始化对象的方法,规则:

    a 初始化方法都是以init开头的,无参的初始化方法就是init(强制将空间清零),有参的都以"initWith"开头

    b 初始化方法的返回值为id类型,代表任意对象,(void*)

    c 初始化方法的固定格式

    -(id)initWithAge:(int)age{

        if (self = [super init]) {

            _age = age;

        }

        return self;

    }

     super代表类的父类,[super init]是通知父类去做底层的操作。

    2 OC中的self既可以用在(-)实例方法中,也可以用在(+)类方法中,self代表着当前方法的调用者

    ,在实例方法中,self代表着"对象",在类方法中,self代表着"类"。

    3 main.m中[[Student alloc] init]与[Student new]是等价的。

    4 id类型是一种特殊的指针类型,类似void*,id类型其实就是一个指针变量类型,指向任何对象,在使用前必须类型转换。

    作业:(使用初始化)创建一个point类,有横坐标x,纵坐标y,能显示位置(show方法),创建两个位置并显示。

  • 相关阅读:
    性能优化
    几种跨域处理
    重温前端基础之-数组去重
    移动端常遇到的问题
    WPF 应用
    WPF 应用
    WPF 应用
    C# 应用
    WPF 应用
    C# 应用
  • 原文地址:https://www.cnblogs.com/yangmx/p/3485149.html
Copyright © 2020-2023  润新知