以上是根据黑马程序员推荐的基础视频跟着做得 ,下面写下学习笔记
description方法是打印的时候%@来打印对象的时候NSObject就有的
子类可以重写这个方法,重写对象方法,调用的时候用对象就可以直接调用
重写类方法,调用的时候 用【对象,class】的方式读取这个类,然后调用类方法
再次重复,写方法的时候-号是对象方法,+号是类方法,写的时候要注意
这次的视频前面主要是介绍public protect private 这些在方法和属性中对子类的影响
protect 是可以被子类使用
private 可以被继承但是不能被使用
public是都可以
视频中还介绍了在m文件中声明一些方法,这些方法都是私有方法,只能在当前m文件中使用
因为.h文件并没有声明它所以其他函数调用这个头文件的时候不能调用这个方法,如果继承这个类,也不能调用这个方法,因为.h文件没有,只能通过.h声明的方法来调用!!!
main
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Dog *d = [Dog new];
[d run];
[d setAge:3];
d->_color =1;
//查看对象的地址
NSLog(@"d=%p",d);
//查看对象实例变量的值
NSLog(@"age=%d",[d age]);
NSString *str = @"abc";
//<Dog: 0x100214560> 类名 后面是地址 %p是打印地址 %@是对象
NSLog(@"%@",d);
//调用了对象的description方法
//当我们以%@的格式,打印对象的d,此时调用了对象的description方法
//对象中如果没有重写父类的description方法,则调用父类的
//%@输出对象的所有的属性信息
//打印类的信息
//打印类[d class]获取dog类
//以%@的形式,打印类信息
NSLog(@"\n%@",[d class]);
}
return 0;
}
Dog.h
#import <Foundation/Foundation.h>
@interface Dog : NSObject
{
int _age;
@public
int _color;
}
-(void)run;
-(void) setAge:(int)age;
-(int)age;
@end
Dog.m
#import "Dog.h" @implementation Dog -(void)run { NSLog(@"