标签搜索

java中的接口

ATAO
2022-03-19 / 0 评论 / 23 阅读 / 正在检测是否收录...

接口的定义:

interface 接口名{
    ...
}

接口就是一个特殊的类

接口中不能有字段,但可以有常量,默认被public static final修饰:

interface X{
    int a = 1;
}

等价于

interface X{
    public static final int a = 1;
}

接口的方法:

1.接口中的所有方法,默认被public abstract修饰,也就是说接口中的所有方法都是抽象方法。

interface X{
    void f1();
}

等价于

interface X{
    public abstract void f1();
}

2.接口中也可以定义普通方法:

interface X {
    void f1() {
        ...
    }
}

注意:

Java中,有一个规范,当一个变量同时被static和final修饰的时候,该变量的名字中的所有字母都应该时大写的,单词和单词之间用 "_" 隔开。

例:

interface X{
    String MY_NAME = "第一帅";
    static final int HER_AGE = 20;
    final double HIS_SALARY = 30000;
}

接口无法被实例化,因为接口中的方法都是抽象的。

接口的实现:

class 类名 implements 接口名{
    //实现接口的所有抽象方法
}

接口中的抽象方法,在非抽象子类中,必须全部得以实现:

interface I{
    void aa();    //接口中的方法。默认被public修饰
}
class A implements I{
    public void aa(){    //所以子类重写方法时,访问修饰符也必须是public
        System.out.println("A.aa()");
    }
}

一个类只能继承一个类,但一个类可实现多个接口:

interface A{
    void aa();
}
interface B{
    void aa();
    void bb();
}
class X implements A, B{
    public void aa(){    //一个类实现两个接口,
                        //两个接口的抽象方法必须全部实现
    }                    //如果多个接口出现了相同的方法,
    public void bb(){    //只实现一次即可
        
    }
}

一个类在继承一个类的同时,可以再去实现其他多个接口:

class X extends A implements B, C{
    
}

一个类实现一个接口,是一种比较特殊的“继承”关系,所以也能发生向上转型:

interface A{
    
}
class X implements A{
    
}
public class Test{
    public static void main(String[] args){
        X x = new X();
        A a = new X();    //这里发生了向上转型
    }
}

接口的扩展

接口和接口之间,时多继承的关系,也就是说,一个接口可以继承其他多个接口,等价于汇总了多个接口中的所有抽象方法到一个接口中:

interface A{
    void aa();
}
interface B{
    void bb();
}
interface C extends A, B{
    
}
class X implements C{    //接口C没有任何抽象方法,
    public void aa(){    //但它继承了A和B中的所有抽象方法
        
    }
    public void bb(){
        
    }
}
0

评论 (0)

取消