在JDK8中,接口也可以定义静态方法,可以直接用接口名调用。实现类和实现是不可以调用的。如果同时实现
两个接口,接口中定义了一样的默认方法,必须重写,不然会报错。
接口和抽象类的区别是什么
1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以
有非抽象的方法
2. 接口中的实例变量默认是 fifinal 类型的,而抽象类中则不一定
3. 一个类可以实现多个接口,但最多只能实现一个抽象类
4. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定
5. 接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对象 从设计层面来说,抽象是对类的抽
象,是一种模板设计,接口是行为的抽象,是一种行为的规范。
/**
* jdk1.8 接口测试
*/
public interface InterTest {
/**定义一个抽象方法*/
public abstract void fun();
* jdk1.8 接口测试
*/
public interface InterTest {
/**定义一个抽象方法*/
public abstract void fun();
/**接口写main方法*/
public static void main(String[] args) {
InterTest i=new interfaceImpl ();
i.test();
}
/**定一个默认实现方法-子类可以不覆盖重写*/
default void test() {
System.out.println("hello world");
fun();
}
}
子类
class interfaceImpl implements Intert{
@Override
public void fun() {
System.out.println("实现接口中的抽象方法");
}
}
default void test() {
System.out.println("hello world");
fun();
}
}
子类
class interfaceImpl implements Intert{
@Override
public void fun() {
System.out.println("实现接口中的抽象方法");
}
}