19_内部类 匿名内部类

内部类

    在描述事物时,若一个事物内部同时还包含其他事物时,就可以使用内部类这种结构。
  什么是内部类:
    将一个类A定义在另一个类B里面,里面的类A就被称为内部类。类B则成为外部类。

 成员内部类:

  成员内部类:定义在类中方法外的类

  格式:

   public class OuterClassName{
                        //.............
                        calss InnerClassName{
                        //........
                        }
                        //...........
                    }

举例:

            如:汽车事物和引擎事物    引擎在汽车事物的内部
                    public class Car{//   Car就是外部类

                        class Engine{//   Engine就是内部类

                        }
                        //  成员方法   move()  方法外
                        public void move(){
                                System.out.println("汽车在运动!");
                        }

                    }

创建内部类的对象的格式:

  外部类名.内部类   对象名  =   new  外部类().new  内部类型();
        //首先创建外部类对象
        Xxxx yyy =new Xxxx();
        //创建内部类对象    (上边的xxx = new 外部类() )
        // 外部类名.内部类   对象名  =   new  外部类().new  内部类型();
        Xxxx.Heart heart = Xxxx.new Heart();

备注:

内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件

  但是.class文件的名称是:
    外部类名$内部类名
    如:Body$Heart.class

匿名内部类 【重点】

是内部简化写法。他的本质是一个【带具体实现的】【父类或者父接口】【匿名】子类的对象。在开发中最常用的内部类就是匿名内部类。

实例:

             以接口举例,当你使用一个接口的时候,你需要做如下操作:
                        1.定义一个子类
                        2.重写抽象方法(还有少量的方法)
                        3.创建子类对象
                        4.调用重写后的方法。
        我们的目的就是调用接口中的某一个方法,以上四步可以简化成一步操作
    前提:
                匿名内部类必须是继承一个父类或者实现一个父接口。
    格式:
                new  父类名或者父接口名(){
                        //方法的重写
                        @Override
                        public void method(){
                                //方法体内容
                        }
                }
举例:
        以接口为例,匿名内部类的使用。
原文地址:https://www.cnblogs.com/rxqq/p/13922594.html