目标:实现多个接口的使用注意事项
小结:
1.如果实现了多个接口,多个接口中存在同名的静态方法并不会冲突,
原因是只能通过各自接口名访问静态方法。
2.当一个类,既继承一个父类,又实现若干个接口时,(重点)
父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。
3.当一个类实现多个接口时,多个接口中存在同名的默认方法。
实现类必须重写这个方法。
4.接口中,没有构造器,不能创建对象。(重点)
接口是更彻底的抽象,连构造器都没有,自然不能创建对象!!
如果实现了多个接口,多个接口中存在同名的静态方法并不会冲突
原因是只能通过各自接口名访问静态方法。
interface A{
static void test(){
System.out.println("A");
}
}
interface B{
static void test(){
System.out.println("B");
}
}
class C implements A , B{
}
interface A{
static void test(){
System.out.println("A");
}
}
interface B{
static void test(){
System.out.println("B");
}
}
class C implements A , B{
}
当一个类,既继承一个父类,又实现若干个接口时,(重点)
父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。
class Animal{
public void run(){
System.out.println("动物可以跑步~~~");
}
}
interface A{
default void run(){
System.out.println("A可以跑步~~~");
}
}
interface B{
}
class Cat extends Animal implements A , B{
}
当一个类实现多个接口时,多个接口中存在同名的默认方法。
实现类必须重写这个方法。
interface A{
default void test(){
System.out.println("A");
}
}
interface B{
default void test(){
System.out.println("B");
}
}
class C implements A , B {
@Override
public void test() {
System.out.println("C");
}
}
接口中,没有构造器,不能创建对象。(重点)
接口是更彻底的抽象,连构造器都没有,自然不能创建对象!!
public class InterfaceDemo {
public static void main(String[] args) {
Cat c = new Cat();
c.run();
}
}