接口
接口(interface)是一种特殊的抽象类,本质上不是一个类,里面只能包含常量和方法的定义(接口里的方法不允许实现),接口就是一套为实现方法的集合
声明语法:【修饰符】 interface 接口名称{
【常量定义】
【抽象方法的定义】
}
接口中不存在想普通类一样的属性,以及普通方法,因此接口实际上就是一套标准,既然是标准,那就必然存在实现,java中的类可以实现多个接口,从而弥补了类只能单继承的缺点
接口(标准)和抽象类(类)的区别
1.接口通常表示对行为(动词,形容词)的抽象;抽象类一般为对具备相同的属性的类的抽象
2.接口中只允许常量和抽象方法;抽象类中具备普通类的所有特征,同时也支持抽象方法
3.接口允许多实现,接口允许继承多个接口;抽象类只能单继承
4.接口不存在构造器,无法实例化;抽象类虽然存在构造器,但是也无法实例化
JDK8接口的新特性
默认方法
接口静态方法
函数式接口(@Functionallnterface)
lambda表达式
lambda只能适用于函数式接口
内部类
java中的内部类分为一下几种:
·成员内部类:权限类似于成员变量,是在类结构的最顶层定义,跟全局变量,方法属于一个访问级别
·局部内部类:java中的内部类还能在构造器,普通方法,语句块中定义,这些内部类称之为局部内部类,适用范围只能在声明区 域,不能使用访问修饰符,因为在方法级别已经定义的访问权限
·静态内部类:在将成员内部类使用static修饰,从而使得在外界需要使用当前类的内部类时,只需要通过外部类的名称.(点)内 部类即可
·匿名内部类(重要):没有名字的内部类,在使用时一般只能使用一次(用途:事件监听的实现原理,闹钟,定时消息推送)
为什么要使用内部类呢?
1.内部类提供了更好的封装性
2.在单继承的前提下,内部类再继承其他类,提高了类的扩展性