面向对象高级接口内部类一.接口1.1认识接口Java提供了关键字interface用它来定义接口这种特殊结构格式public interface 接口名{//成员变量默认常量//成员方法默认抽象方法}接口的使用1.接口是用来被类实现implements的称之为实现类伪继承 但是也是父子关系2.一个类是可以实现多个接口的接口可以理解成干爹类实现接口必须重写所有接口的全部抽象方法否则这个类也必须是抽象类接口调用方法3.一个接口可以继承多个接口接口同时也可以被类实现1.2接口的好处1.弥补了类单继承的不足一个类可以实现多个接口2.让程序可以面相接口编程这样程序员可以灵活方便切换各种业务实现1.3接口JDK8的新特性接口JDK可以调用默认方法实例方法、私有方法、类方法静态方法1.4接口的其他细节(了解)注意事项: 一个接口可以继承多个接口 作用:便于实现类去实现1.一个接口继承多个接口 如果多个接口中存在相同的方法声明 则此时不支持多继承2.一个类实现多个接口 如果多个接口中存在相同的方法声明 则此时不支持多实现3.一个类继承了父类 又同时实现了接口 父类中和接口中有同名的默认方法 实现类会有限使用父类的方法4.一个类实现类多个接口 多个接口中有同名的默认方法 则这个类必须重写该方法二.内部类2.1成员内部类成员内部类就是类中的一个普通成员 类似成员变量 成员方法成员内部类创建格式//外部类.内部类 变量名 new 外部类().new 内部类();Outer.Inner in new Outer().new Inner();//调用内部类的方法in.test();内部类访问成语的特点既可以访问内部类的成员 也可以访问外部类成员如果内部类成员和外部类成员同名 可以使用 类名.this成员 区分2.2静态内部类静态内部类其实就是在成员内部类的前面加了一个static关键字。静态内部类属于外部类自己持有2.3局部内部类局部内部类是定义在方法中的类 和局部变量一样 只能在方法中有效 所以内部类的局限性很强 一般在开发中是不会使用的静态内部类创建对象格式需要用外部类的类名调用//格式外部类.内部类 变量名 new 外部类. 内部类();Outer.Inner in new Outer().new Inner();in.test();匿名内部类匿名内部类是一种特殊的局部内部类所谓匿名指的是程序员不需要为类声明名字匿名内部类本质上是一个没有名字的子类对象、或者接口的实现类对象格式new 父类/接口参数值{Override重写父类/接口的方法}匿名内部类有啥作用、应用场景作用简化了创建子类对象、实现对象的书写格式可以更方便的创建出一个子类对象场景只有在调用方法时 当方法的形参是一个接口或者抽象类 为了简化代码书写 而直接传送匿名内部类对象给方法应用匿名内部类通常作为一个参数传输给方法匿名内部类的特点匿名内部类本质就是一个子类 并会立即创建出一个子类对象