之前 一直写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的编译器都认它,它是伪代码,不会被执行,编译的时候被用来检查是否父类含有该方法。