//
// Dog.h
// OC5_构造方法与self指针
//
// Created by zhangxueming on 15/6/9.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> @interface Dog : NSObject
{
NSString *_name;
NSInteger _age;
}
//必须以 initWithXXX开头
//在一个类里面可以有多个构造方法, 但是一个对象只可以调用一次构造方法 //无参数
- (id)init;//返回对象的地址 //带一个参数
- (id)initWithName:(NSString *)name;
- (id)initWithAge:(NSInteger)age; //带两个参数
- (id)initWithName:(NSString *)name andAge:(NSInteger)age; //getter方法
- (NSString *)name; - (NSInteger)age; //setter方法
- (void)setName:(NSString *)name andAge:(NSInteger)age; //类方法
+ (void)testDog; @end
//
// Dog.m
// OC5_构造方法与self指针
//
// Created by zhangxueming on 15/6/9.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "Dog.h" @implementation Dog - (instancetype)init
{
if (self = [super init]) {//引用父类方法的编译器符号
}
return self;
} - (id)initWithName:(NSString *)name
{
if (self = [super init]) {
_name = name;
}
return self;
} - (id)initWithAge:(NSInteger)age
{
if (self = [super init]) {
_age = age;
}
return self;
} - (id)initWithName:(NSString *)name andAge:(NSInteger)age
{
if(self = [super init])
{
_name = name;
_age = age;
}
return self;
} - (NSString *)name
{
return _name;
} - (NSInteger)age
{
return _age;
} - (void)setName:(NSString *)name andAge:(NSInteger)age
{
_name = name;
_age = age;
} +(void)testDog
{
Dog *xiaoHei = [[self alloc] initWithName:@"小黑" andAge: ];
NSLog(@"name = %@ age = %li", [xiaoHei name], [xiaoHei age]);
} @end
//
// main.m
// OC5_构造方法与self指针
//
// Created by zhangxueming on 15/6/9.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Dog.h"
//1.#ifndef "Dog.h" #define "Dog.h" #endif,防止头文件被重定义
//2.@class 打断循环链 防止循环包含 int main(int argc, const char * argv[]) {
@autoreleasepool {
[Dog testDog]; Dog *xiaoBai = [[Dog alloc] init];
[xiaoBai setName:@"小白" andAge:];
NSLog(@"name = %@ age = %li", [xiaoBai name], [xiaoBai age] ); }
return ;
}

OC5_构造方法与self指针的更多相关文章

  1. (二)学习C#之内存管理

    一.当你运行你的程序通常都会访问哪些内存空间呢? 电脑自言自语道,“这个人要声明一个整数”或“这个人个方法”或“这个人要创建一个对象” 1.这些信息究竟是存在内存里的什么地方呢? 2.或者说用于描述这 ...

  2. JS类、对象、方法、prototype、_proto_

    案例代码: function People(name) { //对象属性 this.name = name; //对象方法 this.Introduce = function() { alert(&q ...

  3. OC基础--构造方法 id类型

    new方法实现原理: new做了三件事情 1.开辟存储空间  + alloc 方法 2.初始化所有的属性(成员变量) - init 方法 3.返回对象的地址 [Person new]; == [[Pe ...

  4. OC 类方法,对象方法,构造方法以及instancetype和id的异同

    OC 类方法,对象方法,构造方法以及instancetype和id的异同 类方法: 类方法是可以直接使用类的引用,不需要实例化就可以直接使用的方法.一般写一些工具方法. 类方法: 声明和实现的时候,以 ...

  5. OC-id、构造方法

    id 简介 万能指针,能指向任何OC对象,相当于NSObject * id类型的定义 typedef struct objc_object { Class isa; } *id; 使用 // 注意:i ...

  6. c#重点[数据类型,构造方法,变量,变量,运算符,装箱,拆箱]

    1.命名规范    类  :名词 每个单词的首字母大写 Dog Student  PersonClass 字段:首个字母小写,如果有多个单词,后面的单词首字母大写 string name=" ...

  7. OC基础--构造方法

    OC语言中类的构造方法学了两种: 一.方法一:[类名 new] 例:[Person new] 缺点:可扩展性不强,假如在Person类中有_age 成员变量,在初始化时想让_age 中的值为20,ne ...

  8. JAVA与指针

    首先,提个问题:JAVA中没有指针,JAVA中有指针,哪个一个对呢? 答:都对,JAVA中没有指针,因为我们不能对指针直接操作,像C++那样用->来访问变量. JAVA有指针,因为JDK中封装了 ...

  9. Java-->多线程复制(文件指针)

    --> 这里用到两种方法...其实也不算两种,就一点点不一样而已... ---> Test 测试类 package com.dragon.java.multithreadcopy; imp ...

随机推荐

  1. 大数记录之,大数乘整型数nyoj832

    想到了一个题目:对决二http://acm.nyist.net/JudgeOnline/problem.php?pid=832 但是发现有一道题目是相似的:http://acm.nyist.net/J ...

  2. ELK beats平台介绍(11th)

    beats是一个代理,将不同类型的数据发送到elasticsearch.beats可以直接将数据发送到elasticsearch,也可以通过logstash将数据发送elasticsearch. be ...

  3. Android 图片加载[常见开源项目汇总]

    该文主要是讲一下目前有哪些使用比较多的 图片加载开源项目,并简单介绍该如果使用 以及各开源项目之间有什么区别, 我们该如何去选择适合的开源项目应用到我们的项目中? 一.Android-Universa ...

  4. VM使用标准交换机

    1.新建模板: 网卡选择“未连接”,此处看不到“标准交换机”选项

  5. sgu 101 无向图有双重边的欧拉路径

    #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> ...

  6. OpenResty

  7. iOS开发——新特性OC篇&Objective新特性

    Objective新特性 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时, ...

  8. android学习日记08--Paint画笔

    Paint 要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布Canvas上,这样才可以显示在手机屏幕上.Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设 ...

  9. string中find函数的使用

    9.47 编写程序,首先查找string"ab2c3d7R4E6"中的每个数字字符,然后查找其中每个字母字符.编写两个版本的程序,第一个要使用find_first_of,第二个要使 ...

  10. jquery实现无缝滚动

    //点击上一页 $('.pointLeft').click(function() { if (prevAllow) { prevAllow = false; scrollUlLeft = scroll ...