内部类
一、常规内部类
常规内部类示列:
package com.inner;
public class CommonInner {
public static void main(String[] args) {
CommonInner.TestInner in = new CommonInner().new TestInner();
in.innerTest();
}
public void outTest(){
System.out.println("外部类方法");
}
public class TestInner {
public void innerTest() {
System.out.println("常规内部类方法");
new CommonInner().outTest();
}
}
}
用外部实例化对象直接实例化内部类即可
二、静态内部类
静态内部类示列:
package com.inner;
public class StaticInner {
public static void main(String[] args) {
new StaticInner.TestInner().innerTest();
}
public void outTest() {
System.out.println("外部类方法");
}
public static class TestInner {
public void innerTest() {
System.out.println("静态内部类方法");
new StaticInner().outTest();
}
}
}
由于有static修饰,因此只需用外部类对象直接调用便可,无需实例化
三、局部内部类
局部内部类示列:
package com.inner;
public class PartInner {
public static void main(String[] args) {
System.out.println(new PartInner().test().toString());
}
public Object test() {
class TestInner {
public String toString() {
String str = new PartInner().outTest();
return str;
}
}
return new TestInner();
}
public String outTest() {
return "外部类方法";
}
}
局部内部类只有通过所在方法进行调用,也就是说,该类只有在所在的方法内调用,只能在局部调用
四、匿名内部类
匿名内部类示列:
package com.inner;
public class NewInner {
public static void main(String[] args) {
Inner in = new Inner() {
public void test() {
System.out.println("局部内部类1");
}
};
in.test();
}
}
package com.inner;
public interface Inner {
void test();
}
匿名内部类的创建一般只是在类只使用一次的情况下使用,匿名内部类的创建必须实现一个接口或继承一个类,该类中的方法通过接口或父类进行调用。