黑马程序员——IOS基础——OC面向对象七类的深入

------- android培训java培训、期待与您交流!

类名就是类对象,类对象就是类名

父类:Person

子类:Strudent

分类:Person(MJ)

1.获取类对象:

>Class c=[Person class];//类方法

>Person *p=[Person new];

  Class c2=[p class];//对象方法

2.类对象调用类方法:

Class c=[Person class];

Person *p =[c new];

1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次。

2.当第一次使用某个类,就会调用当前类的+initialize方法

3.先加载父类,再加载子类(+load方法),分类的load是在原来类之后加载

   先初始化父类,再初始化子类(+initialize方法)

[[Student alloc] init];

加载顺序:

Person--load

Student--load

Person(MJ)--load

Person--initialize  //先初始化父类

Student-initialize

由此,我们可以在类第一本加载的时候重写+initialize方法,可以进行监听

-description/+description方法:NSObject的方法

-(NSString *) description:决定实例对象的输出结果

NSLog(@"%@",p);//<Person: 0x100109e50>打印出Person对象p的所有属性值。%@:打印出对象
//默认情况下,利用NSLog和%@输出对象时,结果是:<类名:内存地址>
//1.输出的时候会调用p的-description方法,默认会返回字符串(NSString *)数据显示到屏幕上
//2.在NSObject子类Person中重写
- (NSString *)description
{
	return [NSString stringwithFormat:@"age=@d, name=%@",_age,_name];
}
//再次调用NSLog(@"%@",p);打印:age=20,name=jack
Person *p2=[[Person alloc] init];
p2.age=25;
p2.name=@"Mike";
NSLog(@"%@",p2);//打印出 age=25, name=Mike


+(NSString *) description:决定了类对象的输出结果

Class c = [Person class];
//1.会调用类的+description方法
//2.返回(NSString *)显示到屏幕上
NSLog(@"%@",c);//返回 : Person


NSLog的补充:

苹果文档Language & Utilities--> Object-c下

init main()
{
	NSLog(@"%d",__LINE__); //输出行号
	//NSLog输出C语言字符串的时候,不能有中文
	//NSLog(@"%s",__FILE__); //输出文件路径
	printf("%s\n",__FILE__); //输出:Users/apple/...../main.m
	NSLog(@"%s\n",__func__); //输出当前函数名:main

	Person *p = [[Person alloc] init];
	//指针变量的地址
	NSLog(@"%p",&p); //指针变量的地址
	NSLog(@"%p",p); //对象p的地址
	NSLog(@"%@",p); //<类名:对象地址>
}




------- android培训java培训、期待与您交流!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值