Java基础学习 -- 接口
- interface是一种特殊的class,但接口的组成比类简单,主要由抽象方法(abstract可以省略,但没有方法体)和全局常量(public static final)组成。
- 接口是纯抽象类
- 所有的成员函数都是抽象函数;
- 所有的成员变量都是public static final;
- 接口是为了方便类的调用
- 一个类如果要去实现某个接口,要加 implements 接口名
- 一个类去继承一个接口,必须覆写它的所有方法。
- 抽象类可以实现接口,但是接口不能继承抽象类。
- 一个子类可以继承多个接口(这一点秒杀抽象类,一个抽象类只能被一个子类所继承,单继承局限):
- interface A {
- public static final String MSG = "hello";
- public abstract void print(); //接口的方法一定为抽象函数,但abstract可以省略。
- }
- interface B {
- public abstract void fun(); //abstract可以省略。
- }
- class X implements A,B {
- public void print() {
- System.out.println("Hi");
- }
- public void fun () {
- System.out.println(MSG);
- }
- public class TestDemo {
- public static void main (String args[]) {
- X x = new X();
- A a = x;
- B b = x;
- a.print();
- b.fun();
- }
- }
控制台:Hi
hello
接口的定义:
这两种定义都是正确的。
在定义接口方法的时候没有使用public,那么本质上也不是default权限,而默认就是public。但是子类在覆盖该方法的时候就要加public,否则编译不通过。
很多时候为了防止一些开发者概念不清淅,建议在定义接口方法的时候永远都写上public,但是一般都不去写abstract,所以一般喜欢这么写:
注意:在抽象类中,抽象方法不能省略abstract!