构造方法,自定义构造方法

//
//  main.m

#import <Foundation/Foundation.h>
#import "Iphone.h"
int main(int argc, const char * argv[])
{
    /*
    Iphone * phone1 = [Iphone new];
    phone1->_cpu = 1.5;
    phone1->_ram = 512;
    */

    /*Iphone * phone = [Iphone alloc];//offcc

    phone = [phone init];//[0ffcc init];
    */
    //开辟内存空间,以及初始化成员变量合并一起调用
    Iphone * phone = [[Iphone alloc]init];//[0ffcc init];
    phone->_ram = 512;

    NSLog(@"%@",phone);

    Iphone * phone2 = [[Iphone alloc] initWithIphoneSize:IphoneSize4point0];

    NSLog(@"%@",phone2);

    Iphone * phone3 = [[Iphone alloc] initWithIphoneSize:IphoneSize4point0 andPhoneColor:IphoneColorBlack];

    return 0;
}
//
//  Iphone.h

#import <Foundation/Foundation.h>

enum IphoneSize
{
    IphoneSize3point5,//3.5寸屏幕
    IphoneSize4point0,//4.0寸屏幕
    IphoneSize4point7,//4.7寸屏幕
    IphoneSize5point5 //5.5寸屏幕
};

typedef enum IphoneSize IphoneSize;
enum IphoneColor
{
    IphoneColorWhite,
    IphoneColorBlack
};

typedef enum IphoneColor IphoneColor;

enum IphoneFlashLightStatus
{
    IphoneFlashLightStatusOpen,
    IphoneFlashLightStatusClose,
    IphoneFlashLightStatusAuto
};
typedef enum IphoneFlashLightStatus IphoneFlashLightStatus;

@interface Iphone : NSObject
{
    @public
    /** 用来存储iPhone屏幕尺寸 */
    //enum IphoneSize 与IphoneSize 等价
    IphoneSize _size;//用来存储iPhone屏幕尺寸
    /** 用来存储iPhone颜色 */
    IphoneColor _color;//用来存储iPhone颜色

    /** 用来存储cpu大小 */
    float _cpu;
    /** 用来存储内部容量大小 */
    float _ram;
}

/**打开闪光灯*/
-(void)openFlashLight;
/**关闭闪光灯*/
-(void)closeFlashLight;
/**自动*/
-(void)flaseLightAuto;
/**拍照*/
-(void) cameraWithFlashLightStatus:(IphoneFlashLightStatus)flaseLightStatus;

/**根据传入参数返回相应颜色*/
-(NSString * )getColorWithIphoneColor:(IphoneColor)iphoneColor;

+(NSString *)getColorWithIphoneColor:(IphoneColor)iphoneColor;

//自定义构造方法
//1.一定是对象方法
//2.构造方法一定是init开头
-(Iphone *)initWithIphoneSize:(IphoneSize)iphoneSize;
-(Iphone *)initWithIphoneSize:(IphoneSize)iphoneSize andPhoneColor:(IphoneColor)iphoneColor;
@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-02 13:53:57

构造方法,自定义构造方法的相关文章

继承中的自定义构造方法

1.继承中的自定义构造方法 不能在子类访问父类私有变量 @interface Person : NSObject @property int age; - (id)initWithAge:(int)age; @end @interface Student : Person @property NSString *name; - (id)initWithAge:(int)age andName:(NSString *)name; @end @implementation Student - (id

自定义构造方法

1.自定义构造方法 有时候仅仅靠重写构造方法(初始化方法),不能满足需求.比如一个班级中不可能所有学生的年龄都一样,这时候我们需要在创建某个学生的时候能够传入这个学生的年龄.这时候就需要来自定义构造函数(初始化函数) 自定义构造方法的规范 (1)一定是对象方法,以减号开头 (2)返回值一般是instancetype类型 (3)方法名必须以initWith开头 示例 @interface Person : NSObject @property int age; @property NSString

OC语法4——自定义构造方法,description方法

自定义构造方法: 我们已经知道创建对象分两步,1:在内存中开辟存储空间,并把地址存储在指针变量里,2:调用指针变量的初始化方法init初始化该对象. Student * stu = [Student alloc]; stu = [stu init]; 在这里,init方法是系统原始的初始化方法,但有时我们需要重写该初始化方法,使其在创建该对象的同时赋予它属性的值. 假如,我们现在要重写原始初始化方法,使其创建一个有年龄(age)的stu. 首先,在Student.h中声明自定义方法: - (id

OC中构造方法、自定义构造方法、id类型

一:id类型 1> id 是一种类型,万能指针,能够指向\操作任何的对象. typedef struct objc_object *id; 注意点:在使用id定义的时候,一定要注意(*)id类型默认已经包含了*所以不需要在加*; 局限性:调用一个不存在的方法,编译器会马上报错. 2>instancetype类型 (1)instancetype会让编译器检查实例化对象的准确类型 (2)instancetype只能用于返回类型,不能当做参数使用 3>.instancetype & i

Objective-C - 自定义构造方法

自定义构造方法 @interface Person : NSObject @property NSString *name; @property int age; /* 自定义构造方法的规范 1.一定是对象方法,一定以 - 开头 2.返回值一般是id类型 3.方法名一般以initWith开头 */ - (id)initWithName:(NSString *)name; - (id)initWithAge:(int)age; // initWithName:andAge: - (id)initW

OC的构造方法init以及自定义构造方法

之前我们利用类来创建对象用到了一个类方法new,可是new方法具体是怎么执行的呢?例如 1 Person *p = [Person new]; 程序只要执行了这一行代码,内存中就会有一个Person类和Person对象,并且Person对象的所有实例变量都初始化为0,并且还有个isa指针指向Person类,那么这个对象实际上是通过两部产生的:第一步,调用Person类的alloc类方法分配一定的内存空间给Person对象,它的返回值就是对象本身,实际上也是这一段内存空间的首地址:第二步,调用对象

OC中自定义构造方法

格式 -(instancetype)init(){ self=[super init] if(self){ } return self; } 自定义构造方法规范 1)一定是对象方法,以减号开头 2)返回值一般是id类型 3)方法名一般以initWith开头 带参数的构造方法 -(instatncetype) initWithName:(NSString *) name andAge:(int)age{ if(self=[super init]){ _age=age; _name=name; }

iOS开发核心语言Objetive C —— 编译器指令@[email&#160;protected]自定义构造方法及类工厂

本分享是面向有意向从事iOS开发的伙伴们,或者已经从事了iOS的开发者.如果您对iOS开发有极高的兴趣,可以与我一起探讨iOS开发,一起学习,共同进步.如果您是零基础,建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在开始Objective C语言的学习,如果您遇到问题也可以与我探讨,另外将无偿分享自己整理的大概400G iOS学习视频及学习资料,都是干货哦!可以新浪微博私信?关注极客James,期待与您的共同学习和探讨!!由于时间有限,每天在工作之余整理的学习分享,难免有不足之处,

通过反射获取class文件中的构造方法,运行构造方法

/* * 通过反射获取class文件中的构造方法,运行构造方法 * 运行构造方法,创建对象 * 1.获取class文件对象 * 2.从class文件对象中,获取需要的成员 * * Constructor 描述构造方法对象类 */ 1.person类,用于测试获取无参的构造方法 package cn.itcast.demo1; public class Person { public String name; private int age; /*static{ System.out.printl