接口
在java中,类与类之间只支持单一继承,这使得java中的继承变得更简单,但是也会导致功能变弱,为了解决这一问题,Java中引入了接口。
一个类可以实现多个接口,如图
在java1.7以及1.7之前的版本中,接口里面只能写抽象方法和常量,从1.8开始,接口中可以定义静态方法以及默认方法(你可以理解为成员方法,不过要加default修饰)。静态的方法可以直接通过接口名.方法名调用,默认方法可以用实现了该接口的类对象进行覆盖/复写
这里我用java1.8进行演示,如图
可以看到用abstract可以省略,以及abstract修饰的m2方法在实现类中必须被覆盖。
下面就是调用,如图
内部类
内部类分为四种,静态内部类,成员内部类,局部内部类以及匿名内部类。
内部类顾名思义,就是在内部的类,其实它和变量差不多。
静态内部类:在类体中用static修饰的类
成员内部类:在类体中没有用static修饰的类
局部内部类:在方法体中的类
匿名类:在形式参数中把一个新建实现类对象改写成
new 接口名()
{
匿名类的类体
}
下面我将逐一演示
首先是静态内部类
成员内部类
局部内部类
注意,这里局部内部类分为两种情况,一种是在静态方法中的局部内部类,一种是在成员方法中的局部内部类,它们两个之中都不能写静态方法,这两种是有一些差别的,在静态方法中的局部内部类不可以使用外部类中的成员属性,而成员方法中的局部内部类可以。
匿名内部类
这个应该是一般写法,这里m1的形参是父类/接口,实际参数是子类对象发生了多态,下面是匿名内部类的写法
说了那么多内部类,那内部类有什么好处呢,内部类它可以直接访问外部类的私有属性,因为内部类在外部类的类体中。
以上就是今天学习比较深刻的理解了,希望能对查询到这篇文章的朋友有帮助,以及自己日后可以继续查看。