49天精通Java,第11天,java接口和抽象类的异同,default关键字

在这里插入图片描述

目录

    • 一、什么是接口
    • 二、接口的特点
    • 三、接口和类的区别
    • 四、接口和抽象类的区别
    • 五、接口的声明方式
    • 六、default默认方法

大家好,我是哪吒。

一、什么是接口

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

Java中有一个Comparable接口,只包含一个compareTo方法,public int compareTo(T o);,只有方法定义,没有具体的方法实现,接受一个Object参数,返回一个整数。

49天精通Java,第11天,java接口和抽象类的异同,default关键字_第1张图片

通过implements关键字去实现Comparable接口,并对compareTo方法进行重写,已实现自己的业务逻辑。

public class Test implements Comparable{

    @Override
    public int compareTo(Object o) {
        return 0;
    }
}

二、接口的特点

  1. 接口中的每个方法都是隐式抽象的,接口中的方法会被隐式的指定为public abstract,接口中不用声明public;
  2. 接口中可以含有变量,但是接口中的变量会被隐式的指定为public static final变量;
  3. 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法;

三、接口和类的区别

  1. 接口不能实例化
  2. 接口没有构造方法
  3. 接口中所有的方法必须是抽象方法,java8之后可以使用default关键字修饰非抽象方法
  4. 接口不能包含成员变量,除了static和final变量
  5. 接口支持多实现

四、接口和抽象类的区别

  1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不能有方法体
  2. 抽象类中的成员变量可以使各种类型的,而接口中的成员变量只能是public static final类型的。
  3. 接口中不能含有静态代码块以及静态方法,而抽象类中可以有静态代码块和静态方法。
  4. 一个类只能继承一个抽象类,而一个类可以实现多个接口。

五、接口的声明方式

public interface UserService {
    void study();

    void sleep();
}
public interface StudentService {
    void play();
}

49天精通Java,第11天,java接口和抽象类的异同,default关键字_第2张图片

public class StudentServiceImpl implements StudentService,UserService{
    @Override
    public void play() {

    }

    @Override
    public void study() {

    }

    @Override
    public void sleep() {

    }
}

六、default默认方法

通过default关键字修饰的方法就是默认方法。

如果接口中有很多方法,实现它的类就需要重写接口中的所有方法,不管是否需要用到。如果接口中的某个方法被default关键字修饰了,那么具体的实现类中可以不用实现方法。

public interface Person {

    void study();

    default void say() {
        System.out.println("Person say");
    }
}
public class Student implements Person {
    @Override
    public void study() {
        System.out.println("Student study");
    }
}

如果Student需要实现两个类,这两个接口中都有用default修饰的say方法,那么student类必须重写say方法了,否则就会报错。

49天精通Java,第11天,java接口和抽象类的异同,default关键字_第3张图片


在这里插入图片描述

本文收录于,49天精通Java从入门到就业。

全网最细Java零基础手把手入门教程,系列课程包括:基础篇、集合篇、Java8新特性、多线程、代码实战,持续更新中(每周1-2篇),适合零基础和进阶提升的同学。

哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师。

你可能感兴趣的:(49天入门Java,java,开发语言,servlet)