java中接口的方法都是抽象的吗
发布网友
发布时间:2022-04-19 23:43
我来回答
共4个回答
热心网友
时间:2023-07-02 01:50
在传统版本上,接口中的所有方法必须是非静态的,且是abstract的,且是public的。普通方法可以不写修饰符,也会默认为public和abstract,当然你可以写上了。
但在java版本1.8中,这就不大一样了。
你可以为方法添加默认方法,这时候实现类不继承该方法也是可以编译通过的。不过我不确定此时的方法是不是还是抽象的。我们重点说下面的:
你还可以为接口添加静态方法。从技术角度来说,这是完全合法的。只是它看起来违反了接口作为一个抽象定义的理念。
例子:
至今为止,我们经常在相互一起使用的类中使用静态方法。你可以在标准库中找到像Collection/Collections 或者Path/Paths 这样成对的接口和类。
以Paths 类为例,它只有一些工厂方法。你可以通过一组字符串来构造一个路径,例如Paths.get("jdk1.8.0", "jre", "bin")。在Java 8 中,Path 接口中添加了这样一个方法:
public interface Path {
public static Path get(String first, String... more) {
return FileSystems.getDefault().getPath(first, more);
}
...
}
这样Paths 类就再没有存在的必要了。
热心网友
时间:2023-07-02 01:50
定义了非抽象方法,它默认也是抽象的方法,实现类必须重写,你只是省略的关键字abstract,实际上接口会自动给你加上的
热心网友
时间:2023-07-02 01:51
java 1.8之前的接口是只能定义抽象方法的,默认的接口方法是public abstract,一般是省略了不写的。但是java 1.8之后接口好像就可以定义非抽象的方法了,这个我没有试过,你说的可以定义方法体估计是使用的java1.8之后的版本。
热心网友
时间:2023-07-02 01:51
是的接口的方法默认并且必须是public abstract的。