Java中有了抽象类为什么还有接口这个概念?

Java中有了抽象类为什么还有接口这个概念?

一、抽象类

先来说一下抽象类,首先他是一个要被abstract修饰的类,同理被abstract修饰的方法叫抽象方法。抽象类一定要被继承,然后重写里面的抽象方法的,因为是继承,所以肯定是单继承。

public abstract class A {
    public abstract void think();
}


public class Demo extends A{

    @Override
    public void think() {

    }
}
  1. 上面就是抽象类的常规形式了,那么它有何作用呢?这是一个问题,其实啊,引入这个概念是和实际开发中息息相关的,有的时候我们写一个功能,非常复杂,而且可能还会修改,这个时候我们就不能固定去写,这个时候把一些东西抽象出来,然后用对应开发再去实现相关的业务,这个时候抽象类就起到关键作用了。

  2. 使用抽象类要注意的几点:

    • 抽象类中可以有普通方法
    • 抽象方法必须是在抽象类中
    • 抽象类被继承后抽象类中的抽象方法必须被实现
    • 抽象类是不能被new 的,只能通过子类去调用

二、接口

接口的格式是被interface修饰的,不是用class修饰的,接口也是抽象的,使用方法和抽象类有点类似,那为什么要用接口呢?

public interface Test {
    void delete(String name);
}

public interface Test001 {
    void update(String name);
}

public class ITestImpl implements Test, Test001 {
    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }
}

上面可以看出来吧,我们居然实现了两个接口,好像C++里面的 多继承,这也是为什么接口会出现啊,这里解决了抽象类的痛点,因为java都是单继承,不能实现多继承,接口刚好可以弥补,实现了一个**“伪多继承”**。实际开发项目都是基于接口来设计的,后面开发会大量与接口打交道。

接口的注意点:

  • 接口中只能有些方法,不能实现
  • 接口中的方法是public的,这个可以省略不写

猜你喜欢

转载自blog.csdn.net/qq_39594037/article/details/107102173