Java基础学习之接口和抽象类的概念、区别及适用的场景

1.接口

  接口是抽象方法的集合,一个接口只有方法的形状而没有方法的具体实现,接口是Java面向对象提供的一种机制。
  Java语言是一种单继承的,在类的继承中通过实现多个接口间接实现了多继承功能。接口的声明:

[public] interface InterfaceName{
    void method1(int arg1);
    void method2();
    ...
}

2.抽象类

  抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。抽象类声明:

[public] abstract class ClassName {
    abstract void fun();
    void fun2();
    ...
}

3.接口和抽象类区别

  (1)、接口只能包含抽象方法,抽象类可以包含普通方法;
  (2)、接口的方法都是完全抽象的,并且方法必须是public,而且默认方法是public abstract的,抽象中的方法可以被public,protected等修饰符修饰;
  (3)、子类用implements来实现接口,子类需要实现接口中的所有方法,但继承抽象类可以不重写父类中非抽象方法,抽象类中的抽象方法必须被重写;
  (4)、一个类可以实现多个接口,但只能继承最多一个抽象类,接口可以继承一个或者多个接口;
  (5)、抽象类中可以有普通成员变量,接口中没有普通成员变量,只能有常量;
  (6)、抽象类中的方法可以被static修饰,接口中的方法不可以被static修饰;
  (7)、抽象类可以有构造函数,接口不可以有构造函数。
  PS:相同点是都不能实例化(不能new),都有抽象方法,子类中必须对父类方法进行重写。

4.接口和抽象类的使用场景

  接口主要用于实现多继承的场景以及模块与模块之间的调用情况,抽象类主要用于当做基础类使用,即基类(基类里面的一些方法都有默认的方法实现,即实现接口的公用的代码,个性化的方法由各个子类去实现)。

猜你喜欢

转载自blog.csdn.net/Alexlee1986/article/details/81267876
今日推荐