java内部类
java内部类有四种
内部类、静态内部类、局部内部类、匿名内部类
成员内部类持有对外部类对象的引用
先写一个常规内部类小例子
public class ATest {
private int sum=10;
public class BTest{
int sum=20;
void show(){
int sum=30;
System.out.println(sum);
System.out.println(this.sum);
System.out.println(ATest.this.sum);
}
}
}
测试类
public class TestA {
public static void main(String[] args) {
ATest.BTest testB = new ATest().new BTest();
testB.show();
}
}
输出结果
30
20
10
静态内部类
静态内部类不持有外部类对象的引用
静态内部类不能访问外部的非静态成员
public class Outher {
static int sum=10;
static class Inner{
public void show(){
System.out.println(sum);
}
}
}
测试类
public class TextOuther {
public static void main(String[] args) {
Outher.Inner inner = new Outher.Inner();
inner.show();
}
}
输出结果:10
匿名内部类
没有抽象方法的抽象类
public abstract class Animal {
public abstract void eat();
}
测试类
public class TestAnimal {
public static void main(String[] args) {
Animal dog=new Animal(){
@Override
public void eat() {
System.out.println("狗吃骨头");
}
};
}
}
局部内部类
public class Demo {
int i=10;
public void show(){
class b{
void show(){
System.out.println("我是局部内部类"+i);
}
}
System.out.println("我是成员方法"+i);
}
public static void main(String[] args) {
Demo s = new Demo();
s.show();
}
}
输出结果:我是成员方法10