Java的接口相关问题

Java的接口定义为public和定义为default有什么区别吗?一般定义为哪种啊?

根据实际情况啦,public没有限制,谁都可以用,default只能相同包下的类调用

没有啥一般定义的说法,看场景使用的,有些类你不想让别人直接调用,就用default,可以随意给别人用就用public。只是说public用的多而已。

public :公共的,所有包的类都可以访问它(这个方法或者类、属性)
default:默认的,只有同一个包里面的元素才可以访问它(这个方法或者类、属性)
private:私有的,如果一个元素声明为private,那么只有同一个类下的元素才可以访问它。
protected:受保护的,如果一个元素声明为protected,那么只有同一个包下的元素或者子类中的元素才可以访问它。

默认的方法就行

接口中的default,是JDK8的特性,可以允许接口定义带default的方法,并实现实例方法,也就不是抽象方法,而public是抽象方法。

public :公共的,所有包的类都可以访问它(这个方法或者类、属性)创建对象后,所有包可以直接对象.属性访问;
default:默认的,只有同一个包里面的元素才可以访问它(这个方法或者类、属性)创建对象后,同一包可以直接对象.属性访问;
private:私有的,如果一个元素声明为private,那么只有同一个类下的元素才可以访问它。创建对象后,不可以直接对象.属性访问;
protected:受保护的,如果一个元素声明为protected,那么只有同一个包下的元素或者子类中的元素才可以访问它,创建对象后,
同一包,或者子类可以直接对象.属性访问,

jdk8 default关键字可以在接口中实现方法

default String Hello(){
        System.out.println("Hello World");
        return "Hello World";
    }

默认定义public就行,像我们定义mapper / service的接口时,都是默认使用public ,这样可以通过注入,在其他地方使用到实现了这个接口的方法。