Java基础 — 接口

mac2024-05-07  37

变量

接口中的变量默认为 public static final 变量,并且只能是 public,用 private 修饰会报编译错误。

方法

Java8之前方法会被隐式的指定为  public abstract ,并且只能是 public abstract,其他修饰符都会报错。

在之后可以定义两类实体方法:

定义静态方法

在接口中定义的静态方法,不是抽象的,具体实现的,可以直接使用接口名称调用。

public interface TestMethod {     static void method() {         /**          * 1、定义一个静态的带有方法体的方法          * 2、接口不能创建对象,调用静态方法不需要对象          * 3、接口名调用          */         System.out.println("接口中静态方法");       }

调用:

public static void main( String[] args ) {         /**          * 接口名称,直接调用---TestMethod(接口名称)          */         TestMethod.method(); }

 

定义普通方法

在接口中还可以进行普通方法的定义,不过不是抽象,可以使用关键字default

//定义接口中默认方法       /**      * 不同于静态方法,默认方法是一个非静态方法      * 对于非静态方法,只能通过对象进行调用      * 但是接口是不能创建对象的名故而我们需要子类来实现接口      */     public default void  methodDefault(){         System.out.println();     } }

调用:

//        使用子类对象,调用接口中的默认方法         Inter8Impl inter8 = new Inter8Impl();         inter8.methodDefault();   //        使用多态的特点,接口指向自己的实现类,调用对应的方法         TestMethod i88 = new Inter8Impl();         i88.methodDefault();     }

  此外,值得注意的是:面向对象中,java只是支持单继承,不支持多继承,一个类只能继承一个类

如果多个接口定义了同样的 static 方法,实现类实现这多个接口,是不可使用实现类名调用接口的方法。如果多个接口定义了同样的 default 方法,实现类实现这个多个接口,必须重写掉默认方法,否则编译失败。

总结

在接口中可以定义实现的方法体是java8的一大特性,可以定义多个实体方法,但是方法必须加上static或是default关键字。

 

最新回复(0)