知识点1,接口中定义的静态方法,只能通过接口来调用;
知识点2,通过实现类的对象,可以调用接口中的默认方法,如果实现类重写了接口中的默认方法,调用时,,仍然调用重写以后的方法,
知识点3,如果子类(或实现类)继承的父类和现实的接口中声明了同名同参的默认方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参的方法------->类优先原则;
知识点4,如果实现类实现了多个接口,而这个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,报错;---->接口冲突(解决方法,在子类中重写该方法);
知识点5,如何在子类()或实现类的方法中调用父类,接口中被重写的方法;
//假设CompareA和CompareB中都有method()方法; class SubClass extends SuperClass implemernts CompareA,CompareB{ public void method(){ } public void myMethod{ method();//调用自己定义的重写方法; super.method();//调用的是父类中声明的方法; CompareA.super.method();//调用的是接口中的默认方法; CompareB.super.method();//调用的是接口中的默认方法; } }一方面,作为外部类的成员;
调用外部类的结构;
可以被staatic修饰;
可以被4种不同的权限修饰;
另一方面,作为类;
类内可以定义属性、方法、构造器;
可以被final修饰,表示此类不能被继承,言外之意,不使用final就可以被继承;
可以被abstract修饰;
相同点:不能实例化;都可以包含抽象方法;
不同点:(1)把抽象类和接口(java7,java8,java9)的定义、内部类结构解释说明;
(2)类:单继承 接口:多继承
类与接口:多实现