詭異的java代碼

之前 一直寫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的編譯器都認它,它是僞代碼,不會被執行,編譯的時候被用來檢查是否父類含有該方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章