zoukankan      html  css  js  c++  java
  • 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(){
                                    //方法体内容
                            }
                    }
    举例:
            以接口为例,匿名内部类的使用。
  • 相关阅读:
    在单向链表中删除指定的key
    双向链表反转
    单向链表反转
    认识异或运算
    二分查找
    插入排序
    冒泡排序
    选择排序
    go 语言环境安装
    欧几里得算法
  • 原文地址:https://www.cnblogs.com/rosiness/p/13928731.html
Copyright © 2011-2022 走看看