其他分享
首页 > 其他分享> > 2021-01-19

2021-01-19

作者:互联网

java中接口的使用及实现(一)

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。接口的作用,对外部提供功能的声明,所以接口是用来被具体类实现的;类实现接口使用implements关键字来实现。一个类通过继承接口的方式,从而来继承接口的抽象方法。实质上,接口就是一种特殊的类,但是接口和类却不同。

接口特征

1.接口不能用于实例化对象。(这句话的意思就是指不能在别的类中new出一个接口类的对象,在Java中,其他类要调用另一个类(非静态类)中的方法,则需要对其进行实例化)

2.接口没有构造方法。(我们都知道,在类中都有一个默认构造方法,若重写构造方法,则默认构造方法消失,而在接口中不存在构造方法)

3.接口中所有的方法必须是抽象方法。(注:JDK 1.8 以后,接口里可以有静态方法和方法体了。第二节会作解释)

4.接口中的成员变量必须为常量而且也只能是常量
接口中的成员变量默认:public static final修饰
public static final int dianYa=5;

5.接口中的抽象方法,默认可以不适用abstract修饰符修饰
因为在接口中没有方法体的方法默认就是用abstract修饰符修饰的
默认修饰符 public abstract

6.一个类可以同时继承一个类并实现多个接口。例如:

public interface A {
    public void sing();
}


public interface C {
    public void dance();
}


public  class B implements A,C {
    @Override
    public void sing() {
        System.out.println("--唱歌");
    }

    @Override
    public void dance() {
     System.out.println("------跳舞");
    }
}

上述例子中,B实现了两个接口,所以实现接口A和C中所有的抽象方法。

接口的实现

接口就是抽象方法的集合,需要有具体的类去实现接口中的抽象方法,一个类可以实现多个接口。接口生来就是要被实现的,如果没有一个类实现这个接口,那么这个接口就没有意义。Java中规定,一个实现接口的类必须实现接口中所有的抽象方法,否则必须声明为抽象类。

public interface A {
    public void sing();
    public void dance();
    //此时可以看到接口A中有两个抽象方法
}



public  class B implements A {
    @Override
    public void sing() {
        System.out.println("--唱歌");
    }

    @Override
    public void dance() {
        System.out.println("--跳舞");

    }

上述例子类B为普通类,所以实现了A中所有的抽象方法。

假设此时B类实现A接口中的一个方法而不想实现所有的抽象方法则把B类声明为抽象类即可:

public interface A {
    public void sing();
    public void dance();
    //此时可以看到接口A中有两个抽象方法
}
public  abstract class B implements A,C {
    @Override
    public void sing() {
        System.out.println("--唱歌");
    }
    /**
    *此时类B并没有实现接口A中的dance()方法,所以B类声明为抽象方法。否则会报错
    */
}

(此时B类中的方法便不能直接在主函数中直接调用了,因为B已经是一个抽象类了,我们就需要定义一个B的子类去继承B,然后再通过子类对象去调用B中的方法)。

接口的继承

接口也是可以继承的,Java中接口可以继承接口,当一个接口继承了另一个接口后,子接口自动拥有父接口中的所有属性和方法。
1.单继承

public interface A {
    public void sing();
    public void dance();
}

public interface C extends A {
    public void football();
}



public  class B implements C {
    @Override
    public void sing() {
        System.out.println("--唱歌");
    }

    @Override
    public void dance() {
        System.out.println("--跳舞");

    }

    @Override
    public void football() {
        System.out.println("--足球");

    }
}


public class test{
    public static void main(String[] args) {
        B b=new B();
        b.sing();
        b.dance();
        b.football();
    }
}


运行结果
在上面的例子中,接口C继承了接口A,可以看到C中原本定义的抽象方法只有一个football(),当它继承了接口A之后,则继承A中所有的方法,即C继承了两个方法,再加上自己声明的方法,共三个方法,所以实现C接口的类需要实现三个方法。
2.多继承


public interface A {
    public void sing();
    public void dance();
}

public interface B {
    public void eat();
}

public interface C extends A,B{
    public void football();
}

接口可以实现多继承,一个接口可以继承多个接口,用extends关键字实现,各个接口之间用逗号隔开。上述例子中,接口C则继承了A和B的所有抽象方法,所以实现C接口的类,需要实现四个方法。

标签:01,19,void,接口,dance,抽象,2021,方法,public
来源: https://blog.csdn.net/weixin_46082990/article/details/112808004