在上一篇文章中,我们看到了 java 中提供部分抽象的抽象类。接口是java的核心部分之一,用于实现完全抽象。 接口一般用于为类提供契约来实现。接口没有任何方法的实现。一个类实现了一个接口,从而继承了接口的抽象方法。所以它是一种签订合同,你同意如果你实现了这个接口,那么你必须使用它的方法。它只是一个模式,它本身不能做任何事情。
默认情况下,接口中的所有方法都是 public 和 abstract 并且所有变量都是 public static final。
/** * * @author Arpit * All the methods in interface are public abstract by default * */ interface InterfaceName { void method1(); int method2(); }
例如: 假设你有 Room 类作为你的 pojo 类。现在你希望你所有的房间都是可装饰的,所以你可以只实现可装饰的接口并实现装饰方法。
package com.arpit.java2blog; interface Decorable { void decorate(); } public class Room implements Decorable{ @Override public void decorate() { System.out.println("Decorating the room"); } }
您也可以根据接口创建继承。一个接口只能扩展(扩展)另一个接口。
package com.arpit.java2blog; interface interface1 { void method1(); } interface interface2 extends interface1 { void method2(); } public class ConcreteClass implements interface2{ @Override public void method1() { System.out.println("In method 1"); } @Override public void method2() { System.out.println("In method 2"); } }
让我们创建一个名为 Room.java 的接口。
package com.arpit.java2blog; public interface Room { void showRoom(); }
创建名为“SimpleRoom”的类
package com.arpit.java2blog; public class SimpleRoom implements Room { @Override public void showRoom() { System.out.println("Showing simple room"); } }
创建名为“SpecialRoom”的类
package com.arpit.java2blog; public class SpecialRoom implements Room { @Override public void showRoom() { System.out.println("Showing special Room"); } }
创建名为“RoomInterfaceMain”的主类
package com.arpit.java2blog; public class RoomInterfaceMain { public static void main(String[] args) { // You can assign interface reference variable to concrete implementation Room room=new SimpleRoom(); room.showRoom(); System.out.println("================="); // You can easily change implementation room=new SpecialRoom(); room.showRoom(); } }
当你运行上面的程序时,你会得到下面的输出:
Showing simple room ================= Showing special Room
JDK 8 在接口中进行了重大更改。
这就是java中的接口。
原文链接:https://codingdict.com/