面试题之接口和抽象类的区别

一、简介

本文总结最常见的面试题之一:接口和抽象类的区别。

二、区别

如下表所示:

接口和抽象类对比

区别

Interface接口

Abstract class(含有抽象方法的类成为抽象类)

声明方式

interface

abstract

使用方式

implements

extends

修饰符

接口方法默认修饰符是public。你不可以使用其它修饰符。

抽象方法可以有public、protected和default这些修饰符

main方法

接口没有main方法,因此我们不能运行它。(java8以后接口可以有default和static方法,所以可以运行main方法)

抽象方法可以有main方法并且我们可以运行它

特性

1.      接口中的所有变量都是public static final

2.      接口中的所有方法都是抽象方法

3.      可以同时实现多个接口

1.      抽象类可以有抽象方法,也可以没有。可以有普通方法,也可以没有

2.      普通类继承抽象类,必须实现其中的抽象方法,如果不实现,那么必须也是抽象类

3.      一个普通类只能继承一种抽象类

4.      一个抽象类实现了一个接口,可以不实现其抽象方法

实例化

不能实例化

不能实例化

构造函数

接口没有构造方法

抽象类可以用构造方法

成员变量和方法

必须是静态常量和抽象方法,不能含有静态代码块以及静态方法

可以有成员变量和成员方法,可以有静态代码块和静态方法

说明

接口是特征,是对一种行为的抽象,比如,鸟类拥有的特征是飞。

抽象类是内容,是对一种事物的抽象,比如,鸟类是所有鸟的抽象。

使用示例

public interface IStudent {

 

    public static final String NAME = "ABC";

 

    public abstract void test();

 

    default void test1(){

    }

 

    static void test2() {

 

    }


}

public abstract class AbsClass {

    private int a;

 

    public AbsClass(int a) {

        this.a = a;

    }

 

    public AbsClass() {

    }

 

    public void test() {

 

    }

 

    public abstract void test2();

}

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值