Objective-C 面向对象基础-构造方法

OC中的类使用的是两段的构造方法,这与通常的C++和Java不同,如果想通过构造的方式传递参数,可以重载一个init方法,下面贴代码。

//
//  Goods.h
//  04_Description
//
//  Created by apple on 14-11-9.
//  Copyright (c) 2014年 cc. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Goods : NSObject {

    int _price;
    int _count;

}

/**
 *  多参的构造方法
 *
 *  @param price 价格
 *  @param count 数量
 *
 *  @return 当前类的对象
 */
- (id)initWithAttribute:(int)price:(int)count;

- (void)setPrice:(int)price;
- (int)price;

- (void)setCount:(int)count;
- (int)count;

@end
//
//  Goods.m
//  04_Description
//
//  Created by apple on 14-11-9.
//  Copyright (c) 2014年 cc. All rights reserved.
//

#import "Goods.h"

@implementation Goods

/**
 *  多参的构造方法
 *
 *  @param price 价格
 *  @param count 数量
 *
 *  @return 当前类的对象
 */
-(id)initWithAttribute:(int)price :(int)count {
    //需要调用父类(super)的构造来初始化当前类的对象
    self = [super init];
    if (self) {
        //给成员属性赋值
        _price = price;
        _count = count;
    }

    // id类型可以代表任意类型的对象,这里是返回当前类的对象
    return self;
}

-(void)setPrice:(int)price {
    _price = price;
}

-(int)price {
    return _price;
}

-(void)setCount:(int)count {
    _count = count;
}

-(int)count {
    return _count;
}

@end
//
//  main.m
//  04_Description
//
//  Created by apple on 14-11-9.
//  Copyright (c) 2014年 cc. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Goods.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //通过构造给成员属性赋值赋值
        Goods* pGoods = [[Goods alloc] initWithAttribute:10 :20];

        NSLog(@"价格=%d, 数量=%d", pGoods.price, pGoods.count);

    }
    return 0;
}

通过控制台输出可以看到通过构造穿参也可以给成员属性赋值。

时间: 2024-10-09 07:03:30

Objective-C 面向对象基础-构造方法的相关文章

面向对象基础——构造方法私有化、对象数组、内部类

构造方法私有化 类的封装性不光体如今对属性的封装上.实际上方法也是能够被封装的,当然,在方法封装上也包括了对构造方法的封装.比如例如以下代码就是对构造方法封装. class Singleton{ private Singleton(){ // 将构造方法进行了封装,私有化 } public void print(){ System.out.println("Hello World!!!") ; } }; 使用 class Singleton{ private Singleton(){

面向对象基础——构造方法与匿名对象

什么是构造方法? 只要有一个对象实例化则就会调用构造方法. 在构造方法中要注意以下几点: -构造方法的名称必须与类名一致 -构造方法的声明处不能有任何返回值类型的声明 -不能在构造方法中使用return返回一个值. class Person{ public Person(){ // 声明构造方法 System.out.println("一个新的Person对象产生.") ; } }; public class ConsDemo01{ public static void main(St

附录A培训实习生-面向对象基础(2):构造方法和带参数的构造方法

构造方法,又叫构造函数,其实就是对类进行实例化.构造方法与类同名,无返回值,也不需要void,在new时候调用.也就是说,就是调用构造方法的时候. 所有类都有构造方法,如果你不编码则系统默认生成空的的构造方法,如你有定义构造方法,那么默认的构造方法就会失效. 有参数的构造方法:比如我们希望每个小猫一诞生都有姓名,那么就应该写一个有参数的构造方法. 这是一个有参数的构造方法,可以看下: 1 using System; 2 using System.Collections.Generic; 3 us

C#面向对象基础(一)

面向对象这个词我很早就知道了,但具体是什么东西?什么是面向对象?一直以来都 不理解,只知道它有三大特征,即封装-继承-多态.直到学习完C#视频和看完设计模式 中面向对象基础后,对C#面向对象才有了一个大致的理解.下面这幅图是我对它的一个 宏观的认识. 一.基本知识 1.类成员 属性 C#不直接访问类的数据,通过get和set访问类中字段 方法 表示类的行为.方法可以构造,也可以重载 2.封装 每个对象都包含它能进行操作所需要的所有信息,这种特性就是封装 3.继承 如果两个对象A和B,可以描述为B

java基础学习05(面向对象基础01--类实例分析)

面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过setter和getter设置和取得4.如果需要可以加入若干构造方法 5.再根据其它要求添加相应的方法6.类中的所有方法都不要直接输出,而是交给被调用处调用 Demo 定义并测试一个名为Student的类,包括属性有"学号"."姓名"以及3门课程"数学".

【Java面向对象基础(三)】面向对象思想

[喵"的Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinking in Java中提到“Everything is an object”,即万物皆对象.这里的“对象”指的是任何实体或者任何可以当作实体看待的“虚幻的事物”.比如现实中的人(男人.女人.老人.小孩而...).动物(大象.狮子.猴子...).桌子.凳子.汽车.ATM机等等,也可以使看不见摸不着的空气(氧气.二氧化碳.氮气

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类

【设计模式】面向对象基础

最近一直在学习<大话设计模式>根据师傅对我的指导,让我先学习这本书的附录--面向对象基础.说实在话,面向对象技术从很早就接触了,从刚开始的C++,其次是软工视频,然后是UML,紧接着是C#,直到现在的设计模式.. 总的来说,在设计模式之前,我对面向对象的了解还只是停留在封装.继承.多态的层次上,虽然在C#视频中,有全面的讲解了一下,但是自己还是晕晕乎乎的,脑子中还是有很多疑云..直到这次的设计模式,通过通过幽默生动.而又通俗易懂的故事,对面向对象技术深入浅出,我才算是真正的入门了.. 这篇博客

附录A培训实习生-面向对象基础(3):方法重载

就上一篇代码而言,你如果写Cat cat = new Cat();会直接报错错误 : 1       “Cat”方法没有采用“0”个参数的重载 E:\大话设计模式学习\BigDesignPatterns\附录A培训实习生之面向对象基础\动物运动会\AnimalGames\Form1.cs       20     23     AnimalGames 原因就是必要给小猫起名字.如果当真需要不起名字也要生出小猫来,可以采用方法重载. 方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参