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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值