Java教程

Java 抽象和接口区别

抽象类和接口都用于实现抽象,我们可以在其中声明抽象方法。
但是抽象类和接口之间都无法实例化。
抽象类 接口
1)抽象类可以具有抽象和非抽象的方法 接口可以具有仅抽象方法。从Java 8开始,它还可以具有默认和静态方法
2)抽象类不支持多重继承 接口支持多重继承
3)抽象类可以具有最终变量,非最终变量,静态变量和非静态变量 接口只有静态变量和最终变量
4)抽象类可以提供接口的实现 接口无法提供抽象类的实现
5)抽象关键字用于声明抽象类。 interface关键字用于声明接口。
6)抽象类可以扩展另一个Java类并实现多个Java接口。 接口只能扩展另一个Java接口。
7)可以使用关键字" extends"扩展抽象类 可以使用关键字" implements"实现接口
8)Java 抽象类可以具有私有,受保护等类成员。 默认情况下,Java接口的成员是公共的。
9)示例:
公共抽象类Shape {
公共抽象void draw();
}
示例:
公共接口Drawable {
void draw();
}
简单来说,抽象类实现部分抽象(0到100%),而接口实现完全抽象(100%)。

Java中抽象类和接口的示例

让我们看一个简单的示例,其中我们同时使用了接口和抽象类。
//Creating interface that has 4 methodsinterface A{
    void a();
    //bydefault, public and abstractvoid b();
    void c();
    void d();
}
//Creating abstract class that provides the implementation of one method of A interfaceabstract class B implements A{
    public void c(){
        System.out.println("I am C");
    }
}
//Creating subclass of abstract class, now we need to provide the implementation of rest of the methodsclass M extends B{
    public void a(){
        System.out.println("I am a");
    }
    public void b(){
        System.out.println("I am b");
    }
    public void d(){
        System.out.println("I am d");
    }
}
//Creating a test class that calls the methods of A interfaceclass Test5{
    public static void main(String args[]){
        A a=new M();
        a.a();
        a.b();
        a.c();
        a.d();
    }
}
输出:
I am a I am b I am c I am d
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4