BlockingDeque

  最近在读一些源码的时候突然发现了一个很神奇的东西,它的原始形态是这样的:

  在这行代码中,BlockingDeque、BlockingQueue和Deque是三个接口。刚发现这个问题时,我是十分吃惊的,因为即使在《Thinking in Java》中也没有提到接口之间的继承。所以我立即把这个疑问提交到了stackoverflow上面。

  正如在stackoverflow上面所讨论的一样,一个类只能extends一个父类,但可以implements多个接口。java通过使用接口的概念来取代C++中多继承。与此同时,一个接口则可以同时extends多个接口,却不能implements任何接口。因而,Java中的接口是支持多继承的。

  然后我又做了个实验,来验证如果多个父子接口中有多个相同的方法声明,然后在实现这个最终的接口的时候,相同的方法声明在实现的时候会不会有冲突呢?

  首先写了个接口:TestInterfaceA.java:

  1 package com.peter.java.dsa.interfaces;

  2

  3 public interface TestInterfaceA {

  4 String pri_key = "guess what the private key is";

  5

  6 int add(int x, int y);

  7

  8 String encryt(byte[] result);

  9

  10 int get();

  11 }

  注意,里面声明了三个方法和一个变量;

  然后再与了一个接口:TestInterfaceB.java:

  1 package com.peter.java.dsa.interfaces;

  2

  3 public interface TestInterfaceB {

  4 String pub_key = "guess what the public key is";

  5

  6 int minus(int x, int y);

  7

  8 byte[] decryt(String src);

  9

  10 int get();

  11 }

  里面也声明了三个方法和一个变量;

  然后再定义了一个接口InterfaceMultiInheritance.java同时继承了接口TestInterfaceA.java和接口TestInterfaceB.java:

  1 package com.peter.java.dsa.interfaces;

  2

  3 public interface InterfaceMultiInheritance extends TestInterfaceA,

  4 TestInterfaceB {

  5 int num = 1024;

  6

  7 double divide(int x, int y);

  8

  9 int get();

  10 }

  里面声明了两个方法和一个变量;

  注意,在这三个接口中,有一个共同的方法声明:get()。这个都是要讨论的主题。

  最后在一个类InterfaceImplementTest.java中实现了接口InterfaceMultiInheritance.java,源码如下:

  1 package com.peter.java.dsa.common;

  2

  3 import com.peter.java.dsa.interfaces.InterfaceMultiInheritance;

  4 import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;

  5 import com.sun.org.apache.xml.internal.security.utils.Base64;

  6

  7 public class InterfaceImplementTest implements InterfaceMultiInheritance {

  8

  9 @Override

  10 public int add(int x, int y) {

  11 // TODO Auto-generated method stub

  12 return x + y;

  13 }

  14

  15 @Override

  16 public String encryt(byte[] result) {

  17 // TODO Auto-generated method stub

  18 return Base64.encode(result);

  19 }

  20

  21 @Override

  22 public int minus(int x, int y) {

  23 // TODO Auto-generated method stub

  24 return x - y;

  25 }

  26

  27 @Override

  28 public byte[] decryt(String src) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值