黑马程序员--构造方法重写和desception方法重写

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

构造方法的作用及用法

我们新建一个学生类,但是学生的学号是自动生成的,所以声明icast这个成员变量中我们加了一个readonly,不允许外部设置他的属性

内容包含了构造方法的重写和description的重写,重写的方法的方式和目的

// 学生的声明文件

#import <Foundation/Foundation.h>

@interface Student : NSObject

@property (nonatomic,strong) NSString *name;

@property (nonatomic,strong,readonly) NSString *icast; // 只读

@property (nonatomic,assign) int age;

@end

// 学生的实现文件

#import "Student.h"

@implementation Student

- (Student *)init

{

if(self =[super init])

{

static unsigned long icast = 1101080600;

icast++; // 自动给学号加1

// 初始化同时分配学号

_icast = [NSString stringWithFormat:@"%lu",icast];

}

/*

若把这两句写在if外,会出现有的学号没有对应的学生

static unsigned long icast = 1101080600;

icast++;

*/

return self;

}

// 重写description

- (NSString *)description

{

return [NSString stringWithFormat:@"name : %@, age : %i , icast : %@",_name, _age, _icast];

}

@end

// test文件

#import <Foundation/Foundation.h>

#import "Student.h"

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

@autoreleasepool {

Student *stu = [[Student alloc] init];

stu.name = @"Jack";

stu.age = 20;

NSLog(@"%@",stu);

Student *stu1 = [[Student alloc] init];

NSLog(@"%@",stu1);

}

return 0;

}

构造方法:用来初始化对象的方法,是个对象方法,-开头

1.重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值

2.重写构造方法的注意点

1>.先调用父类的构造方法([super init])

2>.再进行子类内部成员变量的初始化

3.完整地创建一个可用的对象

1>.分配存储空间  +alloc

调用+alloc分配存储空间

Student *stu1 = [Student alloc];

2>.初始化 -init

调用-init进行初始化

Student *st2 = [Student init];

这种写法会导致死循环

- (NSString *)description

{

return [NSString stringWithFormat:@“%@“,self];

}

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

时间: 2024-08-07 16:44:37

黑马程序员--构造方法重写和desception方法重写的相关文章

黑马程序员-构造方法

一.构造方法的作用 用来初始化对象的成员变量值,当我们在创建对象时,需要一些成员变量具有一定的初始值,这个时候就要用到构造方法.利用类的new方法可以创建一个对象,这个new方法其实是分两步来完成创建对象的. 1> 调用+alloc来分配存储空间  Person *p1 = [Person alloc]; 2> 调用-init进行初始化,Person *p2 = [p1 init]; 这样我们就可以重写-init方法进行一些成员变量的初始化了.看下面实例 1 #import <Found

黑马程序员——java——System类的方法演示

System类的一些方法的演示: import java.util.Properties; import java.util.Set; public class StstemDemos { public static void main(String[] args) { method1(); } private static void method1() { // 获取系统的属性信息 Properties pro = System.getProperties(); Set<String> se

黑马程序员---Objective-C基础学习---点方法使用和成员变量的作用域

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.点语法 oc设计点语法的目的就是让其他语言的开发者能快速上手oc这门语言,oc点语法与java里面很像,那什么是点语法呢,点语法怎么用呢? 1.点语法和set和get方法有关 这里新建一个项目,添加一个Person类 Person.h 1 // 2 // Person.h 3 // zijia 4 // 5 // Created by zou on 5/10/15. 6 // Copyri

黑马程序员---autorelease方法

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 基本用法: 1,autorelease 方法会返回对象本身 2,调用完autorelease方法后,对象的计数器不变 2,autorelease 会将对象放到一个自动释放池中 3,当自动释放池被销毁时,会对池子里面的所有对象做一次release操作 autorelease的好处: 1>不用再关心对象释放的时间 2>不用再关心什么时候调用release autorelease的使用注意: 1&

黑马程序员--Objective-C类方法与对象方法、区别、与调用-我之见解

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 类方法. 1. 特点: 以加号( + )开头, 调用格式:  [类名  方法名] 类方法的好处:不需要创建实例对象,直 接通过类名访问,节省空间 ,提高了效率 2.注意事项: 类方法可以和实例方法同名, 相互之间互不影响 类方法可以从父类

黑马程序员 02-set方法和get方法

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 1.set方法与get方法的使用场合 @public的成员变量可以被外界随意赋值,往往会产生脏数据,应该使用set方法和get方法来管理成员的访问(类似安检.水龙头过滤,过滤掉不合理的对象),不如人的年龄不可能为负. 2.set方法 (1)作用:给外界提供一个公共的方法用来设置成员变量值,可以在方法里面过滤掉一些不合理的值: (2)命名规范: 1> 方法名必须以set开头 2> set后面跟上成员变量的名

黑马程序员-内存管理之set方法内存管理

一.set方法内存管理 当一个对象拥有另一个对象的属性时,需要在set方法对当前所拥有的对象做retain操作,因为你的属性是指向了另一个对象,需要让另一个对象知道有单元在使用我. 但是这样写的话不够完善,会出现新的问题.如果对象属性之前已经指向了某一个对象了,此时再传进来一个新的对象,属性指针就指向了新的对象,然后retain了新的对象,但是旧的对象此时并没有人工release过,需要release一下.还有一个问题就是在release旧对象,retain新对象之前要做一个判断,判断一下此时拥

黑马程序员【两种Ajax方法】

两种Ajax方法 Ajax是一种用于快速创建动态网页的技术,他通过在后台与服务器进行少量的数据交换,可以实现网页的异步更新,不需要像传统网页那样重新加载页面也可以做到对网页的某部分作出更新,现在这项技术已经被人们广泛应用,而对于一些对Web的了解还不是很深入的初学者,Ajax依然带着一层神秘的难懂的色彩,今天就在这里给大家以简单的方式解读一下Ajax的实现步骤和原理,并且给大家两种实现Ajax的方法,js和jquery. 首先ajax其实就是js+xml的技术,前端的表现就是一段js代码.要使用

黑马程序员——java——集合 Vcetor 基本方法演示

集合   Vcetor  基本方法演示 import java.util.Enumeration; import java.util.Iterator; import java.util.Vector; public class VectorDemos { public static void main(String[] args) { // 新建一个容器 Vector v = new Vector(); v.addElement("abb1"); v.addElement("