[Java]java review

1.identifier

以_、$、number开头

int $i = 10;


还可以用unicode

String /u4e00 = "abc";

float f/u4e01 = 1.1f;


enum作为关键字,从jdk1.5开始不允许作为identifier

非法:int e#;

 

2. java bean spec

getter setter必须为pubilc

对于listener,对应AddSomeListener,removeSomeListener

 

 

 

3. Interface, abstract

Interface methods must not be static

Interface methods can only be public, abstract (protected is not allowed but is legal for abstract method in abstract class)

abstract methods can not be marked final, strictfp, native

 

 

 

4. method override

override的method,子类不能抛出比父类更大、更多的exception,可以不抛异常,

unchecked (runtime)exception不受约束

 

 

父类的private的方法将不会被override, 子类的同名方法仅被看作一个普通方法

 

声明父类的应用到子类的instance,父类的方法会被assumed called,尽管实际上调用的是子类override的方法

所以调用要符合父类方法的声明特点,比如异常捕获等。

 

 

从JDK1.5开始,override时,返回类型为父类返回类型的子类时也合法

用1.4编译 javac -source 1.4 Base.java 将得到编译错误(imcompatible return type)

声明为final的method不能被override,但是一旦同时声明为private,对子类来说是hidden的,所以可以redefine一样的方法,只不过这里不是override

 

 

5. protected

protected 的可见是通过inheritance,而不是在子类直接操作父类的reference

 

 

 

 

 

 

6. 可变参数

overload时,可变参数的method会是最后的选择


 

7. enum

enum可看做特殊的java class,具体参见另一篇java里的enum

 

所以语法跟class类似

 

8. interface可以extends多个interface

 

 

9. overload

除了parameter list是必须要不同的之外,其他的return type, exception 声明, 访问权限(public,private...)都是任意的

父类、子类分别作为参数列表是合法的overload

overload是compile time确定的,所以由reference type决定,而不是object type,

override是runtime的,由object type决定,而不是reference type

 

 

10. constructor

抽象类可以有constructor,但interface不允许,interface不是一个类,只是定义一些规则而已,所以没有构造的意义,这个不同于抽象类

 

11. operators

+=, -= , *=,  /=包含有隐式转换

a+=b 不等价于 a=a+b

 

 

to be continued...

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值