嵌套类与内部类
有时也将Java内部类分为四种:
- 静态内部类 static inner class (also called nested class)
- 成员内部类 member inner class
- 局部内部类 local inner class
- 匿名内部类 anonymous inner class
我们主要关注前两种
从概念上说,内部类是非static的嵌套类,形式上看有没有static关键字;
在访问权限上,内部类可以访问所在类的所有成员,即使该成员是private的;而static嵌套类则不能访问所在类的成员,static嵌套类必须通过绑定所在类的实例来进行访问,对于所在类的静态成员和方法包括private、protected和public的都可以访问,因为它也有static修饰。
在JVM初始化时,内部类会自动生成一个指向外部实例的引用,同时外围实例满足垃圾回收条件时仍然会存留
参考链接:
http://www.cnblogs.com/mengdd/archive/2013/02/08/2909307.html
同时,嵌套类,static和非static的,都可以被声明为private、public、protected和default的。
Object中的API
hashcode()
对象的地址,很多类已重写。
equals()
以下是Object类中的equals方法,显然在Object中equals方法直接用“==”比较对象地址,但是该方法在很多类中已经重写,要注意区分。
public boolean equals(Object obj) {
return (this == obj);
}
clone()
深拷贝与浅拷贝。
finalize()
FileInputStream中已经重写。