java中接口之间的继承
2014-03-21 17:06
169 查看
最近在读一些源码的时候突然发现了一个很神奇的东西,它的原始形态是这样的:
View Code
在这个类中,只有一个get方法实现了,同时也没有为有多个get要实现而冲突。同时,如果删除了接口InterfaceMultiInheritance.java中的get方法,也只有一个get方法得到了实现并且没有为多个get要实现而出现什么冲突。
所以,我们可以得到一个结论,当编译器在实现接口的时候会依然检查接口InterfaceMultiInheritance.java、TestInterfaceA.java和TestInterfaceB.java中的方法声明,如果后两者有与前者相冲突的方法声明,编译器将只要求类实现前者的声明,而后两者中相同的方法声明将自动被忽略。而当只有后两者中有相同的方法声明时,编译器将实现其中的一个即可。就好像是编译器中有一个专门存储方法声明的Set一样,在有继承关系的接口中,只保存一次相同的方法声明。
package com.peter.java.dsa.common; import com.peter.java.dsa.interfaces.InterfaceMultiInheritance; import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException; import com.sun.org.apache.xml.internal.security.utils.Base64; public class InterfaceImplementTest implements InterfaceMultiInheritance { @Override public int add(int x, int y) { // TODO Auto-generated method stub return x + y; } @Override public String encryt(byte[] result) { // TODO Auto-generated method stub return Base64.encode(result); } @Override public int minus(int x, int y) { // TODO Auto-generated method stub return x - y; } @Override public byte[] decryt(String src) { // TODO Auto-generated method stub try { return Base64.decode(src); } catch (Base64DecodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override public double divide(int x, int y) { // TODO Auto-generated method stub return x/y; } @Override public int get() { // TODO Auto-generated method stub return num; } public void print() { System.out.println("The public key is: "+pub_key+"\nThe private key is: "+pri_key); } }
View Code
在这个类中,只有一个get方法实现了,同时也没有为有多个get要实现而冲突。同时,如果删除了接口InterfaceMultiInheritance.java中的get方法,也只有一个get方法得到了实现并且没有为多个get要实现而出现什么冲突。
所以,我们可以得到一个结论,当编译器在实现接口的时候会依然检查接口InterfaceMultiInheritance.java、TestInterfaceA.java和TestInterfaceB.java中的方法声明,如果后两者有与前者相冲突的方法声明,编译器将只要求类实现前者的声明,而后两者中相同的方法声明将自动被忽略。而当只有后两者中有相同的方法声明时,编译器将实现其中的一个即可。就好像是编译器中有一个专门存储方法声明的Set一样,在有继承关系的接口中,只保存一次相同的方法声明。
相关文章推荐
- Java 接口与类之间继承例题
- java中接口之间的继承
- java中接口之间的继承
- java中接口之间的继承
- java8 接口之间继承与覆盖
- java(未检出20130729) String、StringBuffer、类与类之间关系:依赖关系Use-a、.聚合关系has-a、组合继承(“is-a”)、抽象类、接口
- 为什么Java语言中,类与类之间只能单根继承,类与接口可以多重实现,接口与接口却多根继承
- Java中接口之间的继承
- java中的接口和接口之间的继承问题
- Java接口之间的继承
- java实现接口与继承类的区别
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- java抽象类和接口和继承之间关系
- 1.Java基础-面向对象编程思想(封装继承多态接口)
- Java中继承和面向接口的编程
- 黑马程序员——Java基础---面向对象(封装、继承、单例、抽象类、接口、内部类)
- 实验3_Java类的继承和接口的定义和使用
- 接口之间的继承
- 【Java面试题】13 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- 黑马程序员—————Java基础----继承、多态、抽象、接口