Java类的高级特性:
{Java管理文件机制:类包。
同一个包中的类互相访问时,可以不指定包名。
同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可以分别放在不同盘中,只要将CLASSPATH分别指向两个位置即可。
Java包的命名规则是全部小写字母。}
1.内部类
如果在外部类和非静态方法之外实例化内部类对象,需要使用外部类.内部类的形式指定该对象的类型!
例:
1 public static void main(String args[]){
2
3 OutClass out = new OutClass();
4 OutClass.inClass in0 = new out.doIt();
5 OutClass.inClass in1 = new out.inClass();
6 }
内部类对象会依赖于外部类对象,除非已经存在一个外部类对象,否则类中不会出现内部类对象!
内部类不能被声明为private或protected访问类型。
使用this关键字获取内部类与外部类的引用:
public class Test{
private int x;
private class Inner{
private int x=9;
public void doit(int x) {
x++; //形参x
this.x++; //内部变量x
Test.this.x++; //外部变量x
}
}
}
内部类对象与外部类对象在内存中的分布情况如图👇
匿名内部类:
interface intface0{
}
class OutClass{
public intface0 doit(){ //定义doit方法
return new intface0(){ //声明匿名内部类
private int i=0;
public int input() {
return i;
}
};
}
}
实质上这种内部类的作用就是创建一个实现鱼intface0接口的匿名类的对象。
匿名类格式:
return new class_name(){
......//内部类体
};
来源:oschina
链接:https://my.oschina.net/u/4400756/blog/4184920