论Java中的抽象类与接口(2)

实现接口时接口中原有的抽象方法在实现类中必须实现。默认方法可以根据需要有选择实现(覆盖)。静态方法不需要实现,实现类中不能拥有接口中的静态方法。(Java 8之后)

//InterfaceA.java文件,定义一个接口 public interface InterfaceA { //抽象方法 void methodA(); String methodB(); // 默认方法 default int methodC() { return "6666"; } // 默认方法 default String methodD() { return "这是默认方法"; } // 静态方法 static double methodE() { return 0.0; } }

实现接口代码

import xxxx.InterfaceA; public class ABC implements InterfaceA { //重写 @Override public void methodA() { } @Override public String methodB() { return "实现methodB方法..."; } //重写覆盖,根据自己的需要来。 @Override public int methodC() { return 500; } } //实现类中不能有接口中的静态方法,最后一行 public class HelloWorld { public static void main(String[] args) { //声明接口类型,对象是实现类,发生多态 InterfaceA abc = new ABC(); // 访问实现类methodB方法 System.out.println(abc.methodB()); // 访问默认方法methodC System.out.println(abc.methodC()); // 访问默认方法methodD System.out.println(abc.methodD()); // 访问InterfaceA静态方法methodE,这里不能通过实现类去使用接口的静态方法,只能通过接口名调用 System.out.println(InterfaceA.methodE()); } } 作用

规范,在分配不同人的任务时,接口就像是总纲一样,告诉大家去实现哪些功能模块等。(命名规范都有限制到)

最后:接口与抽象类的异同 不同

接口interface,实现接口则使用implements;抽象类abstract

抽象类可以有普通方法。Java 8 之前接口中只有抽象方法,而 Java 8 之后接口中也可以声明具体方法,具体方法通过声明默认方法实现。

接口可以继承多个,而抽象类不可以。

和类继承相似,子接口扩展某个父接口,将会获得父接口里定义的所有抽象方法、常量Field、内部类和枚举类定义。

实现父接口的所有:一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法(也就是重写这些抽象方法);否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义成抽象类。

接口定义的是一种规范,因此接口里不能包含构造器和初始化块定义。接口里可以包含Field(只能是常量)、方法(只能是抽象实例方法)、内部类(包括内部接口、枚举)定义。但抽象类与普通类一样,可以有构造器,初始化模块等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/245711fe6daa10248cc2618e286420d3.html