java 接口

Posted 市丸银

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 接口相关的知识,希望对你有一定的参考价值。

一、概念

1、接口是多个类的语法规范

2、语法

public interface 接口名{}

3、注意

a、一个接口可以被多个实现类 实现

b、接口不能被实例化

二、实现类

1、作用:实现接口

2、语法

public class 实现类名 implements 接口名 {}

3、注意

实现类可以继承多个接口

三、组成

1、常量

A、语法

public interface MyInterfaceVar {
    public static final int MAX_AGE = 100;
}

B、注意事项:

a、常量名称大写且用下划线法则

b、常量必须赋值

c、常量既可以通过实现类调用,也可以通过接口调用

d、public static final 可以省略不写

2、抽象类

A、语法

public interface MyInterfaceA {
    public abstract void method();
}

B、注意事项

a、抽象方法在实现类中必须 overrider,若不overrider 这个实现类,就必须要是抽象类

b、实现类继承多个接口,且接口中有相同的抽象方法时,实现类只要重写一个即可

c、public abstract 可以省略不写

d、实现类的对象可以调用抽象方法

例子

技术图片
1 package cn.wt.test.Demon01;
2 
3 public interface MyInterfaceA {
4     public abstract void methodA();
5     public abstract void method();
6 }
MyInterfaceA.java
技术图片
1 package cn.wt.test.Demon01;
2 
3 public interface MyInterfaceB {
4     public abstract void method();
5     public abstract void methodB();
6 }
MyInterfaceB
技术图片
 1 package cn.wt.test.Demon01;
 2 
 3 public class MyInterImp implements MyInterfaceA, MyInterfaceB{
 4 
 5     @Override
 6     public void methodA() {
 7         System.out.println("接口A的抽象方法");
 8     }
 9 
10     @Override
11     public void method() {
12         System.out.println("接口的抽象方法");
13     }
14 
15     @Override
16     public void methodB() {
17         System.out.println("接口B的抽象方法");
18     }
19 }
MyInterImp.java
技术图片
 1 package cn.wt.test.Demon01;
 2 
 3 public class Demon {
 4     public static void main(String[] args) {
 5         MyInterImp imp = new MyInterImp();
 6         imp.methodA();
 7         imp.method();
 8         imp.methodB();
 9     }
10 }
Demon

3、默认方法

A、作用

a、接口 添加新的方法时,不需要像抽象类这样,在每一个实现类 中都要 overrider

b、默认方法可以在实现类中重写

B、语法

public interface MyInterfaceC {
    public default void method(){
        System.out.println("接口C中的默认方法");
    }
}

C、注意事项

1、public 可以省略不写

2、实现类的对象可以调用 默认方法

3、当拥有多个接口,且默认方法的名称相同时,实现类 必须要重写 默认方法

例子

技术图片
 1 package cn.wt.test.Demon01;
 2 
 3 public interface MyInterfaceC {
 4 
 5     public default void methodC(){
 6         System.out.println("接口C中的C方法");
 7     }
 8 
 9     public default void method(){
10         System.out.println("接口C中的默认方法");
11     }
12 }
MyInterfaceC
技术图片
 1 package cn.wt.test.Demon01;
 2 
 3 public interface MyInterfaceD {
 4     public default void methodD(){
 5         System.out.println("接口D中的D方法");
 6     }
 7 
 8     public default void method(){
 9         System.out.println("接口D中的默认方法");
10     }
11 }
MyInterfaceD
技术图片
1 package cn.wt.test.Demon01;
2 
3 public class MyInterImp2 implements MyInterfaceC, MyInterfaceD {
4 
5     @Override
6     public void method() {
7         System.out.println("默认方法汇总");
8     }
9 }
MyInterImp2
技术图片
 1 package cn.wt.test.Demon01;
 2 
 3 public class Demon02 {
 4     public static void main(String[] args) {
 5         MyInterImp2 imp2 = new MyInterImp2();
 6         imp2.method();
 7         imp2.methodD();
 8         imp2.methodC();
 9     }
10 }
Demon02

4、静态方法

概念:与类中的静态方法相似

A、语法

public interface MyInterfaceA {
    public static void method(){
        System.out.println("接口A中的静态方法");
    }
}

B、注意事项

可以直接使用接口调用静态类

例子

技术图片
public interface MyInterfaceA {
    public static void method(){
        System.out.println("接口A中的静态方法");
    }
}
MyInterfaceA.java
技术图片
1 package cn.wt.test.Demon01.demon02;
2 
3 public class Demon {
4     public static void main(String[] args) {
5         MyInterfaceA.method();
6     }
7 }
Demon

5、私有方法

A、作用

默认方法和静态方法中有重复的代码块,进行再一步封装

B、语法

C、注意

这个是版本1.9 以上才有的功能(明天写)

四、其它注意事项

1、接口中不能有static块和 构造方法

2、类是单继承,接口可以多继承即:一个接口可以 implement 多个接口

3、一个类即继承又实现接口,当父类和接口中的方法发送冲突时(方法名相同),以父类的方法为优先

4、一个类实现多个接口,且接口中有重名的抽象方法,重写一次即可

5、一个类继承多个接口,且接口中有重名的默认方法,默认方法必须在实现类中overrider

6、接口中的静态方法,可可以使用接口直接调用,所有不使用实现类也没关系                                                                                                                                                                                                                                                                                                                                       

以上是关于java 接口的主要内容,如果未能解决你的问题,请参考以下文章

从父片段到选项卡片段的接口侦听器不起作用

java中封装,继承,多态,接口学习总结

如何使用接口在片段和活动之间进行通信?

与另一个片段通信的片段接口

Java 封装

Java 封装