需注意:
1、接口没有构造函数和静态代码块
2、类的直接父类唯一,但一个类可同时实现多个接口
3、常量是由类构造器在初始化时加载,而非对象构造器
/实现类实现了两个接口,中间用逗号分隔
public class Zi extends Fu implements InterfaceImplementA,InterfaceImplementB {
@Override
public void methodA() {
}
@Override
public void methodB() {
}
}
3、实现类实现的多个接口中,有重复的抽象方法,只需覆写一次
public interface InterfaceImplementA {
public abstract void method();
public default void methodC(){
}
}
public interface InterfaceImplementB {
public abstract void method();
public default void methodC(){
}
}
public class Zi extends Fu implements InterfaceImplementA,InterfaceImplementB {
//只重写了一次
@Override
public void method() {
}
//对实现接口冲突的默认方法进行复写
@Override
public void methodC() {
}
}
4、如果实现方法没有覆盖接口的所有抽象类,那么他是一个抽象类
5、实现类实现的多个接口中,有重复的默认方法,实现类一定对冲突方法进行复写
public interface InterfaceImplementA {
public default void methodD(){
System.out.println("接口");
}
}
public interface InterfaceImplementB {
public default void methodD() {
System.out.println("接口哈哈");
}
}
public class Zi implements InterfaceImplementA,InterfaceImplementB {
@Override
public void methodD() {
}
}
6、一个类的直接父类与接口默认方法冲突,优先实现父类
public interface MyInterface1 {
public default void method(){
System.out.println("默认方法");
}
}
public class Fu {
public void method(){
System.out.println("父类方法");
}
}
public class MyImplement extends Fu implements MyInterface1 {
}
public class MyMain {
public static void main(String[] args) {
MyImplement implement=new MyImplement();
implement.method();
}
}
运行结果
类与接口的关系
1、类与类之间是单继承
2、一个类可以实现多个接口
3、接口与接口之间可以实现多继承
注:
(1)多个父接口的抽象方法重复没关系
public interface FuInterface1 {
public abstract void method();
}
public interface FuInterface2 {
public abstract void method();
}
public interface ZiInterface extends FuInterface1,FuInterface2 {
}
(2)多个父接口的默认方法重复,子类必须对默认方法进行复写,且必须带有default关键字
public interface FuInterface1 {
public default void method(){
}
}
public interface FuInterface2{
public default void method(){
}
}
public interface ZiInterface extends FuInterface1,FuInterface2 {
@Override
default void method() {
}
}
网友评论