java内部类

在这里我们介绍在java中的三种内部类(成员内部类,方法内部类(又叫局部内部类)和匿名内部类),内部类顾名思义就是在一个类里面再定义一个类。

  1.成员内部类(member inner class):常规内部类没有用static修饰且定义在在外部类类体中,高度内聚
    常规内部类中的方法可以直接使用外部类的实例变量和实例方法。

    代码如下:

    public class A {

      //定义一个常规内部类

     public class B {

        public void show() {

          System.out.pritln("这是类B.");

        }

      }

      //在本类中调用常规内部类时可以直接new 常规内部类。

      public static void main(String[] args) {

        B b = new B();

        b.show();

      }

    }

    //在其他类中调用B类的方法。

    //忽略导包。

    public class C {

      public static void main(String[] args) {

        B b = new A().new B();

      }

    }

   2.方法内部类(局部内部类):定义在方法的内部(作用域:只能在该方法的内部使用,超出该方法则无法使用)方法定义局部内部类同方 法定义局部变量一样,不能使用private、protected、public等访问修饰说明符修饰,也不能使用static修饰,但可以使用final和   abstract修饰

      例题代码如下:

      public class A {

        public void show (){

          System.out.println("类A中的show方法。");

          //定义一个局部类B

          class B {

            System.out.println("局部内部类B");

          }

        }

        //在main方法中调用show();

        public static void main (String[] args) {

          A.show();

        }

      }

    3.匿名内部类(Anonymous inner class):就是定义一个没有名字的类,所以这个类是一次性的,不能够重复使用。也就是将类的定义与类的创建,放到一起完成,或者说在定义类的同时就创建一个类。

      语法如下:

        new className() {

          //类体。

        }

      例题代码如下:

      //定义一个People接口

      public interface People {

        //定义一个抽象方法

        public void action();

      }

      //一个测试类

      public class Test {

        public static void main(String[] args) {

          People  students = new People() {

            //实现People类里的action方法

            public void action() {

              System.out.println("学习");

            }

          };

          students.action();

        }

      }

      

原文地址:https://www.cnblogs.com/xzmr/p/6069422.html