登陆 / 注册
JAVA 学习手册 展开/折叠

抽象类和接口

阅读数:8

抽象类和接口之间的区别

抽象类和接口都用于实现抽象,我们可以声明抽象方法。抽象类和接口都无法实例化。

但是下面给出了抽象类和接口之间的许多差异。

名称抽象类(abstract class)接口(interface)
1抽象类可以有抽象和非抽象方法接口只能有抽象方法。从Java 8开始,它也可以有默认和静态方法。
2抽象类不支持多重继承。接口支持多重继承。
3抽象类可以有final(最终),no-final,static(静态)和no-static变量。接口只有static(静态)和final(最终)变量。
4抽象类可以提供接口的实现。接口不能继承抽象类的完成方法的实现。
5abstract关键字用于声明抽象类。interface关键字用于声明接口。
6抽象类可以j继承另一个Java类并实现多个Java接口。接口只能继承另一个Java接口。
7可以使用关键字"extends"继承抽象类。一个类可以使用关键字"implements"来实现接口。
8Java 抽象类可以有类成员,如private,protected修饰等。默认情况下,Java接口的成员是public的。
9

示例:

public abstract class Shape { 

    public abstract void draw(); 

}

示例:

public interface Drawable { 

     void draw(); 

}

简单地说,抽象类实现了部分抽象(0到100%),而接口实现了完全抽象(100%)。

Java中抽象类和接口的示例

让我们看一个简单的例子,我们使用接口和抽象类。

//创建有4种方法的接口  
interface A {  
    void  a(); //默认,public abstract修饰  
    void  b();  
    void  c();  
    void  d();  
}  
  
//创建抽象类,提供A接口的一种方法的实现  
absteract B implements A{   
    public void  c(){
        System.out.println("我是c" );
    }   
}  
  
//创建抽象类的子类,现在我们需要提供其余方法的实现  
class M extends B {  
    public void  a(){
        System.out.println("我是a" );
    }   
    public void  b(){
        System.out.println("我是b" );
    }   
    public void  d(){
        System.out.println("我是d" );
    }   
}  
  
//创建一个调用A接口方法的测试类  
class  Test5{  
    public static void  main(String args []){    
        A a= new M();  
        a.a();  
        a.b();  
        a.c();  
        a.d();  
    }
}

运行以上示例,输出如下结果:

我是a
我是b
我是c
我是d

本节内容如下:

抽象类和抽象方法 

接口的使用 

嵌套接口

微信扫码登陆