内部类的四种情况
目录
内部类的四种情况
第一种 两个类在同一个文件中
代码示例
package com.gaoling.classTest2;
public class A {//第一个类
/*
* 调用方式
*/
public static void main(String[] args) {
B b=new B();
}
}
class B{//第二个类
}
说明
A B耦合度最低,只是共用一个文件.java而已。这里的B是一个protected的,只能在本包中使用。
编译后的情况
classTest2---
A.class
B.class
第二种 内部类
代码
package com.gaoling.classTest1;
public class A {
class B{
//这个B是A的子类,可以有public,private 或其他前缀
}
/*
* 调用方式
*/
public static void main(String[] args)
{
A a=new A();
B b=a.new B();//注意不是new A.B()
}
}
说明
B是A的内部类,这个类是一个公有的,可以在其他包中使用,但是需要import com.gaoling.classTest1.A.B;
编译情况
classTest1---
A.class
A$B.class
第三种 函数中的类
代码
package com.gaoling.classTest3;
public class A {
public void function(){
class B{
};
//这个B只能在这个function函数中中被实例化和调用
}
public static void main(String[] args) {
}
}
编译情况
classTest3---
A.class
A$1B.class
第四种 函数中的类(接口形式)
代码
package com.gaoling.classTest4;
public class A {
public void function (){
Runnable runable=new Runnable(){//实现接口的形式
public void run() {
}
};
}
}
说明 这种情况和第三种一样,只是编译后得到的class文件有些区别
编译情况
A.class
A$1.class