JDK8开始接口中新增的方法
接口中可以定义有方法体的方法(默认、静态)。
使用默认方法的作用:解决接口升级的问题。
接口中默认方法的定义格式:
public default返回值类型 方法名(参数列表){}
接口中默认方法的注意事项:
- 默认方法不是抽象方法,所以不强制被重写。但如果被重写,重写的时候去掉default关键字。
java
package oop.a06interface;
public interface Inter {
public abstract void math();
public default void show(){
System.out.println("接口中的默认方法---show");
}
}
package oop.a06interface;
public class InterImpl implements Inter {
@Override
public void math() {
System.out.println("实现类重写的抽象方法");
}
}
package oop.a06interface;
public class Test {
public static void main(String[] args) {
InterImpl ii=new InterImpl();
ii.show();
ii.math();
}
}
-
public可以省略,default不能省略。
-
如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写。
java
package oop.a06interface;
public interface InterA {
public abstract void math();
public default void show(){
System.out.println("InterA接口中的默认方法---show");
}
}
package oop.a06interface;
public interface InterB {
public default void show(){
System.out.println("InterB接口中的默认方法---show");
}
}
package oop.a06interface;
public class InterImpl implements InterA ,InterB{
@Override
public void math() {
System.out.println("实现类重写的抽象方法");
}
@Override
public void show() {
System.out.println("接口中的默认方法");
}
}
package oop.a06interface;
public class Test {
public static void main(String[] args) {
InterImpl ii=new InterImpl();
ii.show();
ii.math();
}
}
接口中静态方法的定义格式:
public static返回值类型 方法名(参数列表){}
接口中静态方法的注意事项:
- 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
java
package oop.a07interface;
public interface Inter {
public abstract void math();
public static void show(){
System.out.println("inter接口中的静态方法");
}
}
package oop.a07interface;
public class InterImpl implements Inter{
@Override
public void math() {
System.out.println("InterImpl重写的抽象方法");
}
}
package oop.a07interface;
public class Test {
public static void main(String[] args) {
Inter.show();
}
}
-
- public可以省略,static不能省略
JDK9中新增方法
接口中私有方法的定义格式:
格式1:Private 返回值类型 方法名(参数列表){}
格式2:private static 返回值类型 方法名(参数列表){}
接口的应用
1.接口代表规则:是行为的抽象。想要让哪个类拥有一个行为,就让这个类实现对应的接口就可以了。
2.当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称之为接口多态。
适配器设计模式
设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
适配器设计模式:解决接口与接口实现类之间的矛盾问题。
java
package oop.a09interface;
public interface Inter {
public abstract void meth1();
public abstract void meth2();
public abstract void meth3();
public abstract void meth4();
public abstract void meth5();
public abstract void meth6();
public abstract void meth7();
public abstract void meth8();
public abstract void meth9();
public abstract void meth10();
}
package oop.a09interface;
public abstract class InterAdapter implements Inter {
@Override
public void meth1() {
}
@Override
public void meth2() {
}
@Override
public void meth3() {
}
@Override
public void meth4() {
}
@Override
public void meth5() {
}
@Override
public void meth6() {
}
@Override
public void meth7() {
}
@Override
public void meth8() {
}
@Override
public void meth9() {
}
@Override
public void meth10() {
}
}
package oop.a09interface;
public class InterImpl extends InterAdapter{
//需要用到哪个方法就重写哪个方法就可以了
@Override
public void meth5() {
System.out.println("只要用第五个方法");
}
}