Java学习笔记——接口(二)

第一章 接口(二)

1.4接口的多实现

在继承中,一个类只能继承一个父类,而在接口中,一个类可以实现多个接口,并且一个类能继承一个父类,同时实现多个接口。

实现格式:

class 类名 [extends 父类名] implements 接口1,接口2,接口3...{
    //重写接口中抽象的方法【必须】
    //重写接口中默认的方法【不重名时可选】
}

1.4.1抽象方法

在接口中,有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一次。代码如下:

定义多个接口:

interface A{
	public abstract void showA();
    public abstract void show();
}
interface B{
    public abstract void showB();
    public abstract void show();
}

定义实现类:

public class C implements A,B{
    @override
    public void showA(){
        System.out.println("showA");
    }
    @override
    public void showB(){
        System.out.println("showB");
    }
    @override
    public void show(){
        System.out.println("show");
    }
}

1.4.2默认方法

接口中,有多个默认方法时,实现类都可以继承使用。如果默认方法有重名的,必须重写一次。代码如下:

定义多个接口:

interface A{
    public default void methodA(){}
    public default void method(){}
}
interface B{
    public default void methodB(){}
    public default void method(){}
}

定义实现类:

public class C implements A,B{
    @override 
    public void method(){
        System.out.println("method");
    }
}

1.4.3静态方法

在接口中,存在同名的静态方法并不会冲突,原因是只能通过各自接口访问静态方法。

优先级问题

当一个类既继承一个父类,又实现多个接口是,父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。代码如下:

定义接口:

interface A{
    public default void methodA(){
        System.out.println("AAAAAAAA");
    }
}

定义父类:

class D{
    public void methodA(){
        System.out.println("DDDDDDDD");
    }
}

定义子类:

class C extends D implements A{
    //未重写methodA方法
}

定义测试类:

public class Test{
    public static void main(String[] args){
        C c = new C();
        c.methodA();
    }
}
输出结果:
DDDDDDDD

1.5接口的多继承【了解】

一个接口能继承另一个或者多个接口。接口的继承使用 extends 关键字,子接口继承父接口的方法。如果父接口中的默认方法有重名的,那么子接口需要重写一次。代码如下:

定义父接口:

interface A {
	public default void method(){
		System.out.println("AAAAAAAAAAAAAAAAAAA");
	}
}
interface B {
	public default void method(){
		System.out.println("BBBBBBBBBBBBBBBBBBB");
	}
}

定义子接口:

interface D extends A,B{
	@Override
	public default void method() {
		System.out.println("DDDDDDDDDDDDDD");
	}
}

小贴士:

子接口重写默认方法时,default关键字可以保留。

子类重写默认方法时,default关键字不可以保留。

1.6其他成员特点

  • 接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰。
  • 接口中,没有构造方法,不能创建对象。
  • 接口中,没有静态代码块。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值