Rumah > Java > Javabermula > java抽象类与接口的区别有哪些

java抽象类与接口的区别有哪些

爱喝马黛茶的安东尼
Lepaskan: 2019-11-14 17:47:20
asal
4451 orang telah melayarinya

java抽象类与接口的区别有哪些

一、抽象类

在Java中,被关键字abstract修饰的类称为抽象类;被abstract修饰的方法称为抽象方法,抽象方法只有方法声明没有方法体。

抽象类有以下几个特点:

1、抽象类不能被实例化,只能被继承。

2、包含抽象方法的类一定是抽象类,但抽象类不一定包含抽象方法(抽象类可以包含普通方法)。

3、抽象方法的权限修饰符只能为public或者protected,默认情况下为public。

4、一个类继承于一个抽象类,则子类必须实现抽象类的抽象方法,如果子类没有实现父类的抽象方法,那子类必须定义为抽象类。

5、抽象类可以包含属性、方法、构造方法,但构造方法不能用来实例化对象,只能被子类调用。

二、接口

接口可以看成是一种特殊的类,只能用interface关键字修饰。接口是提供给别人调用的。Java中的接口具有以下几个特点:

1、接口中可以包含变量和方法,变量被隐式指定为public static final,方法被隐式指定为public abstract(JDK 1.8之前);

2、接口支持多继承,即一个接口可以继承(extends)多个接口,间接解决了Java中类不能多继承的问题;

3、一个类可以同时实现多个接口,一个类实现某个接口则必须实现该接口中的抽象方法,否则该类必须被定义为抽象类;

4、JDK 1.8中对接口新增了两个特性:

(1)默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法。

(2)静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。

5、在JDK 1.9中,再次对接口进行了增强,可以实现private method和private static method。因为JDK 1.8中可以对接口中的方法进行实现,那么当我们不希望实现的方法暴露给外部时,则可以将方法定义为private。

三、接口与抽象类的区别

1、抽象类中可以包含普通方法,但接口中只能包含public abstract方法(JDK 1.8之前);

2、抽象类中的成员变量没有访问权限的限制,但接口中的变量只能被public static final修饰;

3、一个接口可以继承多个接口,但一个类只能有一个父类,类可以实现多个接口;

4、抽象类是对一类事物的抽象,接口则是对行为的抽象。一个类继承一个抽象类代表“是不是”的关系,而一个类实现一个接口则表示“有没有”的关系。

php中文网,大量的免费Java入门教程,欢迎在线学习!

Atas ialah kandungan terperinci java抽象类与接口的区别有哪些. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan