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(){
                                    //方法体内容
                            }
                    }
    举例:
            以接口为例,匿名内部类的使用。
  • 相关阅读:
    74.Maximal Rectangle(数组中的最大矩阵)
    73.Largest Rectangle in Histogram(最大矩形)
    72.Minimum Window Substring(最小子串窗口)
    71.Edit Distance(编辑距离)
    70.Trapping Rain Water(容水量)
    69.Daily Temperatures(日常气温)
    68.Palindromic Substrings(回文字符串的个数)
    67.Task Scheduler(任务规划)
    66.Subarray Sum Equals K(子数组和为K的个数)
    65.Longest Increasing Subsequence(最长增长子序列)
  • 原文地址:https://www.cnblogs.com/rxqq/p/13922594.html
Copyright © 2011-2022 走看看