java5

子类默认会用super()调用父类构造方法F()

p=new Person(){{ age=12; name="zsan";}};//双括号写法来赋初值

实例初始化:类中直接写的{语句;...}//先于构造方法{}中的语句执行

静态初始化:static{语句;...}//先于实例的初始化

构造方法执行过程

先父类构造,再本类字段赋值,再构造方法中的语句

构造方法中最好不要调用别的方法。如果调用虚方法,就不合理了。

可以安全调用具有final属性的方法。

System.gc()方法建议系统进行垃圾回收

finalize方法可以做析构功能,当然在子类中要调用父类的finalize方法。

 

内部类  Xxx$Xxx

不能与外部类同名;

在其他地方使用时,      外部对象名.new 内部类名(参数)

访问外部类字段或方法   外部类名.this.字段

可以的访问符             public  protected  private  默认

可以的修饰符             final,abstract

用static修饰              表明实际它是外部类

 

static类在new前面不用对象实例变量;

static类不能访问非static字段、方法;

 

局部类 (方法中的内部类,同局部变量一样)

不能用public,private,protected,static

可以用final、abstract

可以访问外部类成员

不能访问该方法的局部变量,除非它是final局部变量

 

匿名类  Xxx$1

没有名字的内部类,定义时就生成对象的一个实例,一次性使用

return new Object(){                                 //new ClassName/InterfaceName (){...} 

public String toString(){ return ("..")}

}

不取名字,直接用其父类或接口的名字。

典型应用:注册一个事件监听器;作为方法的参数

posted @ 2015-09-11 21:56  jack-xu  阅读(146)  评论(0编辑  收藏  举报