内部类分为三个类型:成员内部类,局部内部类,匿名内部类
第一:成员内部类,在类的成员位置,和类的成员变量和成员方法位置是一样的。
代码演示:
public class neibulei {
public static void main(String[] args) {
//outer o = new outer();
//o.method();
//outer.inner i = new outer().new inner();
//i.function();
//outer2.inner2 i =new outer2.inner2();
//i.function();
outer2.inner2.function();
}
}
class outer{
public void method() {
inner i =new inner();
i.function();
}
class inner{
public void function() {
System.out.println(“function”);
}
}
}
class outer2{
public void method() {
inner2 i =new inner2();
}
static class inner2{
public static void function() {
System.out.println("function");
}
}
}
第二:局部内部类,在方法内,出了方法就无法使用
代码演示:
public class neibulei2 {
public static void main(String[] args) {
outer3 outer3 = new outer3();
outer3.method();
}
}
class outer3{
public void method() {
class inner{
public void function() {
System.out.println("function");
}
}
inner i =new inner();
i.function();
}
}
第三种:匿名内部类,可以把匿名内部类看成没有名字的局部内部类,定义在方法中,在定义的时候就要创建对象。
代码演示:
public class neibulei {
public static void main(String[] args) {
outer outer = new outer();
outer.method();
}
}
interface inner{
public void function() ;
}
class outer{
public void method() {
/*
new inner(){
public void function() {
System.out.println(“function”);
}
}.function();;
*/
inner i = new inner() { //重点,后面记得加分号
public void function() {
System.out.println(“function”);
}
};
i.function();
i.function();
}
}