类和接口的关系
类与类中只能单继承,不能多继承;但是可以多层继承。
类与接口可以多实现,一个类实现多个接口
如果一个类实现了多个接口,且不同接口内有相同的方法,那么规定实现类必须要重写这个同名的方法,否则报错。
//两个接口有相同的默认方法
public interface A {
default void show(){
}
}
public interface B{
default void show(){
}
}
//实现类必须重写这个方法,否则报错,因为如果不实现,创建对象调用的时候,不知道调用哪个接口的方法。
public class Test implements A,B{
@Override
public void show() {
System.out.println("重写");
}
}
如果一个类同时继承了一个类和一个接口,如果类和接口内有相同的方法,那么创建对象调用的时候,会优先使用类的方法。如果子类重写,使用子类的方法
public interface A {
default void show(){
System.out.println("接口的方法");
}
}
public class B {
public void show(){
System.out.println("优先调用类的方法");
}
}
public class Test extends B implements A{
public static void main(String[] args) {
Test t = new Test();
t.show(); //调用类的方法
}
}
接口和接口的关系
接口可以实现多继承(继承接口)。
interface A extends B,C{
}
接口内没有构造方法
抽象类和接口的区别
抽象类是自下而上,抽取出共同点。
接口是一种规范, 它是自上而下的一种要求,要求实现类必须做到这种规范。