4.0OC6-self、自动释放、变量作用域
类
方法的声明和实现,都可以以 + 或者 - 开头
+ 表示类的方法(静态方法)
- 表示对象方法(动态方法)
在.h中声明的所有方法都是public类型(通过Category可以实现private)
变量的作用域
@public全局都可以访问
@protected只能在类内部和子类中访问
@private只能在类内部访问
变量必须定义在类的{ } 中
-----------main.m-------------
//
// main.m
// 构造方法
//
// Created by liuyes on 13-12-8.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
//char *s = "itcast"; C语言中字符串
NSString *str = @"itcast"; //OC中的字符串
Student *stu = [[Student alloc] initWithAge:15 andNo:10];
NSLog(@"%@", stu); //%@表示打印的内存地址
//NSLog(@"age is %i and no is %i", stu.age, stu.no);
[stu release];
}
return 0;
}
-----------Student.h-------------
//
// Student.h
// 构造方法
//
// Created by liuyes on 13-12-8.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Student : NSObject{
int _age;
int _no;
}
- (void)setAge:(int)age;
- (int)age;
- (void)setNo:(int)no;
- (int)no;
//自己写一个构造方法
- (id)initWithAge:(int)age andNo:(int)no;
@end
-----------Student.m-------------
//
// Student.m
// 构造方法
//
// Created by liuyes on 13-12-8.
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "Student.h"
@implementation Student
- (void)setAge:(int)age{
_age = age;
}
- (int)age{
return _age;
}
- (void)setNo:(int)no{
_no = no;
}
- (int)no{
return _no;
}
//实现构造方法
- (id)initWithAge:(int)age andNo:(int)no{
//首先要调用super的构造方法
self = [super init];
//如果self不为nil
if(self != nil){
_age = age;
_no = no;
}
return self;
}
//重写父类的description方法
//当使用%@带打印一个对象的时候,回调用这个方法
-(NSString *)description{
NSString *str = [NSStringstringWithFormat:@"age is %i, and no is %i", _age, _no];
return str;
}
//如果直接把方法写在.m文件中,没有在.h文件中进行声明,那么这就是私有方法
//谁调用方法,self就指向谁
- (void)test{
int age = self.age;
}
+ (void)test2{
[Student alloc];
[self alloc];
//上面两句代码师等效的
}
@end
-----------GoodStudent.h-------------
//
// GoodStudent.h
// 构造方法
//
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "Student.h"
@interface GoodStudent : Student
@end
-----------GoodStudent.m-------------
//
// GoodStudent.m
// 构造方法
//
// Copyright (c) 2013年 renhe. All rights reserved.
//
#import "GoodStudent.h"
@implementation GoodStudent
//子类访问了父类的成员变量
- (void)test{
_age = 10;
}
@end