Java 内部类
Java内部类分为几个类型:
(1)成员内部类
(2)方法内部类
(3)静态内部类
(4)匿名内部类
匿名内部类分为三种:继承式的匿名内部类、接口式匿名内部类、参数式匿名内部类
成员内部类:
public class TestInnerClass { public static void main(String[] args) { //调用成员内部类有两种方式 //方法一:使用外部类来调用创建内部类 Outer out = new Outer(); Outer.Inner inner = out.new Inner(); inner.print(); //方法二:调用普通方法来调用内部类 out.show(); } } class Outer{ public String name; //方法二:在类中定义方法,来调用内部类 public void show() { Inner inner = new Inner(); inner.print(); } //成员内部类 public class Inner{ public void print() { System.out.println("成员内部类"); } } }
方法内部类:
public class TestInnerClass { public static void main(String[] args) { Outer out = new Outer(); out.show(); } } class Outer{ public String name; public void show() { //方法内部类只能在定义该内部类的方法中进行实例化 //方法内部类不能使用方法中的非final变量,show()方法的形参或局部变量必须是final class Inner{ private void print() { System.out.println("方法内部类"); } } Inner inner = new Inner(); inner.print(); } }
静态内部类:
public class TestInnerClass { public static void main(String[] args) { Outer.Inner inner = new Outer.Inner(); inner.print(); } } class Outer{ public String name; //静态内部类的含义是该内部类可以和其他静态成员一样,没有创建对象也可以访问它 //静态内部类仅能访问外部类的静态成员和静态方法 static class Inner{ public void print() { System.out.println("我是内部类"); } } }
匿名内部类:
(1)继承式匿名内部类
public class TestInnerClass { public static void main(String[] args) { Cat cc = new Cat() { @Override public void eat() { System.out.println("继承式匿名内部类"); } }; } } abstract class Cat{ public abstract void eat(); }
(2)接口式匿名内部类
public class TestInnerClass { public static void main(String[] args) { Dog dd = new Dog() { @Override public void eat() { System.out.println("接口式匿名内部类"); } }; } } interface Dog{ public void eat(); }
(3)参数式匿名内部类
public class TestInnerClass { public static void main(String[] args) { show(new Dog() { public void eat() { System.out.println("参数内部类"); } }); } public static void show(Dog dd) { dd.eat(); } } interface Dog{ public void eat(); }
本文来自博客园,作者:藤原豆腐渣渣,转载请注明原文链接:https://www.cnblogs.com/javafufeng/p/16282243.html