this和supper關(guān)鍵字
一個(gè)是this另外一個(gè)是supper。
首先介紹supper吧。它比較好介紹點(diǎn)。
大家都知道java中很重要的就是類的概念。而類可以被繼承的,被繼承的類稱為父類,繼承的那個(gè)類稱為子類。
而父類又被稱為超類,所以這超類就比較容易說點(diǎn)。這也是區(qū)分使用this和supper的好方法吧。
Super是子類調(diào)用當(dāng)前對象父類的構(gòu)造函數(shù)(且必須是構(gòu)造函數(shù))方法,在這必須注意的是構(gòu)造函數(shù)。如有不懂的可看書,什么是構(gòu)造函數(shù),在這就不寫了。
This是調(diào)用當(dāng)前構(gòu)造函數(shù)的方法.
而且都只能在類的第一個(gè)寫。
如果子類的函數(shù)或?qū)ο蟀迅割惖暮瘮?shù)或?qū)ο蟾采w了。而且子類又想使用父類的函數(shù)或?qū)ο螅偷檬褂胹uper來調(diào)用。
在來就是我看到的以個(gè)很經(jīng)典的程序。
public class ATM
{
public Account a;
public ATM (Account s)
{
a=s;
}
}
這是程序的第一個(gè)類。
public class Account
{
public ATM b;
public int No=10;
void openATM()
{
b=new ATM(this);
}
}
這是程序的第二個(gè)類。
public class Example12
{
public static void main(String arg[])
{
Account m=new Account();
m.openATM();
System.out.println(m.No);
System.out.println(m.b.a.No);
}
}
這是主程序。
可以看到的是this的使用,并不是一定的,this是調(diào)用當(dāng)前構(gòu)造函數(shù)的,呵呵··
似乎很迷糊吧。
看 b=new ATM(this);
而這個(gè)ATM中的this又是指的什么呢?
看看上面 看ATM類,指的是什么?Account s,它又是什么呢?a=s··
這下就明白了,其實(shí) 這this就是a。
再看主程序,
System.out.println(m.No);
System.out.println(m.b.a.No);
第一個(gè)輸出是10.想必大家都知道,第二個(gè)呢?
m.b.a.No呢?
看····m.openATM();
還有
void openATM()
{
b=new ATM(this);
}
而那個(gè)
public ATM (Account s)
{
a=s;
}
看到了么?
他們之間的調(diào)用,其實(shí)程序最后 就是m.No很多人都不懂這是為什么。
慢慢看吧··
看明白了就知道了。