之前 一直寫C/C++的code,突然要寫java了,發現我竟然看不懂java代碼了,暈。
java裏面有些相比C/C++很詭異的東西:
1. 兩個類可以交叉調用
---A.java---
package p1;
class A{
void func(B b)
{
b.x();
}
}
---B.java----
package p1;
class B{
void func(A a)
{
a.x();
}
}
--------------------
在c/c++中,這種會報找不到A定義或者報找不到B定義。反正會循環包含。
但是java ok。
這就和java的oo思想有關。一切都是對象。
java的類要使用另一個類,只要拿到權限就可以了。class只有包訪問權限和public權限。
(1).同一個包內的類不需要import就能相互訪問。
(2).兩個包內的類,需要import,而只有public的類才能被import.
2. 在new ClassName()後面跟着一個大括號{}。
----A.java----
Class A()
{
A()
{
}
B b = new B()
{
public Bfunc()
{....}
};
}
在大括號內的方法都相當於在A文件中重寫原來B.java裏的B定義。如果這個Bfunc()原來並不存在,就相當於增加了一個。不能寫一個函數名和參數列表都和原來定義一樣,但是返回值卻不一樣的函數出來,B類會弄不清要調用哪個。
實際上java有個專業名詞來解釋這個語法,就是匿名內部類
3.@Override
看起來是個錯誤的語法,但是java的編譯器都認它,它是僞代碼,不會被執行,編譯的時候被用來檢查是否父類含有該方法。