接口

  在java中,类与类之间只支持单一继承,这使得java中的继承变得更简单,但是也会导致功能变弱,为了解决这一问题,Java中引入了接口。

  一个类可以实现多个接口,如图

java接口函数使用内部类实现 java内部接口怎么使用_内部类

  在java1.7以及1.7之前的版本中,接口里面只能写抽象方法和常量,从1.8开始,接口中可以定义静态方法以及默认方法(你可以理解为成员方法,不过要加default修饰)。静态的方法可以直接通过接口名.方法名调用,默认方法可以用实现了该接口的类对象进行覆盖/复写

  这里我用java1.8进行演示,如图

java接口函数使用内部类实现 java内部接口怎么使用_多态_02


  可以看到用abstract可以省略,以及abstract修饰的m2方法在实现类中必须被覆盖。

  下面就是调用,如图

java接口函数使用内部类实现 java内部接口怎么使用_多态_03


  

  

内部类

  内部类分为四种,静态内部类,成员内部类,局部内部类以及匿名内部类。

  内部类顾名思义,就是在内部的类,其实它和变量差不多。

  静态内部类:在类体中用static修饰的类

  成员内部类:在类体中没有用static修饰的类

  局部内部类:在方法体中的类

  匿名类:在形式参数中把一个新建实现类对象改写成

    new 接口名()

      {

        匿名类的类体

      }

  

下面我将逐一演示

  首先是静态内部类

java接口函数使用内部类实现 java内部接口怎么使用_接口_04


  成员内部类

java接口函数使用内部类实现 java内部接口怎么使用_java接口函数使用内部类实现_05


  局部内部类

java接口函数使用内部类实现 java内部接口怎么使用_接口_06


  注意,这里局部内部类分为两种情况,一种是在静态方法中的局部内部类,一种是在成员方法中的局部内部类,它们两个之中都不能写静态方法,这两种是有一些差别的,在静态方法中的局部内部类不可以使用外部类中的成员属性,而成员方法中的局部内部类可以。

java接口函数使用内部类实现 java内部接口怎么使用_局部内部类_07


  匿名内部类

java接口函数使用内部类实现 java内部接口怎么使用_内部类_08

这个应该是一般写法,这里m1的形参是父类/接口,实际参数是子类对象发生了多态,下面是匿名内部类的写法

java接口函数使用内部类实现 java内部接口怎么使用_多态_09


说了那么多内部类,那内部类有什么好处呢,内部类它可以直接访问外部类的私有属性,因为内部类在外部类的类体中。

  

  以上就是今天学习比较深刻的理解了,希望能对查询到这篇文章的朋友有帮助,以及自己日后可以继续查看。