08.self关键字
一、Java中的this只能用在動態(tài)方法中,不能用在靜態(tài)方法中
1.在動態(tài)方法中使用this關(guān)鍵字
1???? public class Student {
2 ? ? private int age;
3 ? ? public void setAge(int age) {
4 ? ? ? ? this.age = age;
5 ?? ?}
6 }
在第4行使用了this,這里的this代表著調(diào)用setAge方法的某個Student對象
?
2.如果在靜態(tài)方法中使用this關(guān)鍵字,直接報錯
?
二、OC中的self既可以用在動態(tài)方法中,也可以用在靜態(tài)方法中
1.self在動態(tài)方法中
?1?@implementation?Student??2??
?3?-?(void)test2?{?
?4??
?5?}?
?6??
?7?-?(void)test3?{?
?8?????[self?test2];?
?9?}
?10?
?11?@end
* 在第3行、第8行定義了2個動態(tài)方法
* 在第8行使用了self關(guān)鍵字,這里的self代表著調(diào)用test3方法的某個Student對象
* 第8行代碼的作用是調(diào)用Student對象的動態(tài)方法test2
?
2.self在靜態(tài)方法中
?2??
?3?+?(void)test2?{?
?4??
?5?}?
?6??
?7?+?(void)test3?{?
?8?????[Student?test2];?
?9?????
?10?????[self?test2];
?11?}
?12?
?13?@end
* 在第3、第7行定義了2個靜態(tài)方法,看清楚方法前面的+號
* 再看第10行,這里用到了self。看清楚了,是在靜態(tài)方法test3中用到了self關(guān)鍵字
* 一開始就說了,self代表著當(dāng)前方法的調(diào)用者。當(dāng)前方法是test3,那test3的調(diào)用者是誰呢?肯定是Student這個類,因為test3是個靜態(tài)方法。因此這里的self代表著Student這個類
* 因此,第8行、第10行的作用是一樣,都是調(diào)用了靜態(tài)方法test2
?
3.self總結(jié)
1> 在動態(tài)方法中,self代表著"對象"
2> 在靜態(tài)方法中,self代表著"類"
3> 萬變不離其宗,記住一句話就行了:self代表著當(dāng)前方法的調(diào)用者
轉(zhuǎn)載于:https://blog.51cto.com/fengsonglin/1689520
總結(jié)
以上是生活随笔為你收集整理的08.self关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ActionScript接收socket
- 下一篇: 【SQLAlchemy】PostgreS