Objective-C----实例变量

一、实例变量的可见度(访问权限)

这里写图片描述

二、方法

OC中的⽅方法分两种:类⽅方法和实例⽅方法。

类⽅方法:只能类使⽤用,例如:+(id)alloc 注:类⽅方法中不能使⽤用 实例变量

实例⽅方法:只能对象使⽤用,例如: -(void)sayHi


三、直接贴代码

//
//  main.m
//  OC_Practice_02
//
//  Created by  on 15/3/31.
//  Copyright (c) 2015年 . All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "AudiCar.h"
#import "Car.h"
#import "Engine.h"
#import "Tire.h"


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

    Person *aPerson = [[Person alloc] init] ;
    //为其相关属性赋值
    aPerson->_address = @"郑州市高新区莲花池水沟子" ;
    aPerson->_hobby = @"敲代码" ;


    //一个类中赋值和取值方法的定义是为了解决受保护的和私有的实例变量无法直接通过对象加指向操作符来访问的形式。属于间接访问。
//    [aPerson setName:@"河南省"] ;
//    [aPerson setAge:12] ;
//    [aPerson setSex:@"女"] ;

    [aPerson setName:@"ha"
                 age:23
                 sex:@"hei"] ;

    NSLog( @"\n%@, %d, %@",
          [aPerson getName],
          [aPerson getAge],
          [aPerson getSex] ) ;

    //自定义初始化方法是在创建对象时对对应的实例变量做赋值操作,而setter方法是在创建对象之后对对应的实例变量做赋值操作,两种都可以完成赋值,但是赋值的时机不同。
    //初始化方法只能在创建对象时被调用一次,而赋值方法可以根据项目需要的具体需求被多次调用。
    Person *anotherPerson = [[Person alloc] initWithName:@"heihei"
                                                     age:45
                                                     sex:@"nv"] ;
    NSLog(@"\nname:%@, age:%d, sex:%@",
          [anotherPerson getName],
          [anotherPerson getAge],
          [anotherPerson getSex] ) ;

    Person *fivePerson = [[Person alloc] initWithName:@"en"
                                                  age:23
                                                  sex:@"en"
                                              address:@"ehh"
                                                hobby:@"hen"] ;

    NSLog(@"\nname:%@, age:%d, sex:%@, address:%@, hobby:%@",
          [fivePerson getName],
          [fivePerson getAge],
          [fivePerson getSex],
          fivePerson->_address,
          fivePerson->_hobby ) ;

    AudiCar *oneCar = [[AudiCar alloc] initWithColor:@"ee"
                                               price:1.3
                                          horsePower:2.2
                                                type:@"ee"] ;

    NSLog(@"color:%@, price:%.2f, horsePower:%.2f, type:%@",
          oneCar->_color,
          oneCar->_price,
          oneCar->_horsePower,
          oneCar->_type ) ;

    //创建引擎对象
    Engine *anEngine = [[Engine alloc] initWithBrand:@"V8"
                                          horsePower:2000] ;
    Car *aCar = [[Car alloc] init] ;
    //为当前的汽车对象安装引擎
    [aCar setEngine:anEngine] ;

    for (int i = 0; i < 4; i++ ) {
        Tire *aTire = [[Tire alloc] initWithBrand:@"米其林"
                                             size:29] ;
        [aCar setTire:aTire atIndex:i] ;
    }
    [aCar run];


    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值