猿教程 Logo

抽象类和接口的区别

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

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

但是在下面给出的抽象类和接口之间有许多区别。

Abstract class接口
1)抽象类可以有抽象和非抽象方法。接口只能有抽象方法。
2)抽象类不支持多重继承。接口支持多继承。
3)抽象类可以有final,非final,静态和非静态变量。接口只有静态和最终变量。
4)抽象类可以有静态方法,主要方法和构造函数。接口不能有静态方法,主方法或构造函数。
5)抽象类可以提供接口的实现。接口不能提供抽象类的实现。
6)abstract关键字用于声明抽象类。interface关键字用于声明接口。
7)示例:public abstract class Shape {public abstract void draw(); }}示例:public interface Drawable {void draw(); }}

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


Java中抽象类和接口的示例

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

相关实例:

//Creating interface that has 4 methods
interface A{
void a();//bydefault, public and abstract
void b();
void c();
void d();
}

//Creating abstract class that provides the implementation of one method of A interface
abstract 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 methods
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");}
}

//Creating a test class that calls the methods of A interface
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
阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/difference-between-abstract-class-and-interface.html