抽象类和接口都用于实现抽象,可以在它们中声明抽象方法。此外,它们都不能被实例化。然而,抽象类和接口之间存在许多区别,下面是一些主要区别:

抽象类接口
1)抽象类可以有抽象方法和非抽象方法。接口只能有抽象方法。从 Java 8 开始,它也可以有默认方法和静态方法
2)抽象类不支持多重继承接口支持多重继承
3) 抽象类可以有最终的、非最终的、静态的和非静态的变量接口只有 static 和 final 变量
4) 抽象类可以提供接口的实现接口不能提供抽象类的实现
5)abstract关键字用于声明抽象类。interface关键字用于声明接口。
6) 一个抽象类可以扩展另一个Java类并实现多个Java接口。一个接口只能扩展另一个 Java 接口。
7)可以使用关键字“extends”扩展抽象类。可以使用关键字“implements”来实现接口
8) Java抽象类可以有类成员,如 private、protected 等。默认情况下,Java 接口的成员是公共的。
9)示例: public abstract class Shape{ public abstract void draw(); }例子: public interface Drawable{ void draw(); }

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

Java中抽象类和接口的例子

让我们看一个同时使用接口和抽象类的简单示例。

//创建具有4个方法的接口 
interface A{  
void a();//bydefault, public and abstract  
void b();  
void c();  
void d();  
}  
  
//创建提供A接口的一个方法实现的抽象类 
abstract class B implements A{  
public void c(){System.out.println("I am C");}  
}  
  
//创建抽象类的子类,现在我们需要提供其余方法的实现 
class 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");}  
}  
  
//创建一个调用A接口方法的测试类 
class 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

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想