当前位置:编程学习 > JAVA >>

关于接口编程

最近在看mobicents的框架    

看到有一个情况 

一个interface A extends Cloneable
我们度知道在接口里  Cloneable的修饰符是protected  这就意味着 凡事 包以外的都不能见到此方法
一个类 B implements A
覆写了clone方法   修饰符为public  

使用接口编程的方式

调用A的接口  怎么调用clone方法   编程 interface 类 --------------------编程问答-------------------- --------------------编程问答-------------------- 感觉这个写的不错,应该能解惑:http://blog.csdn.net/treeroot/article/details/96936 --------------------编程问答-------------------- 单纯的接口编程  怎么用接口调出clone方法   

引用 2 楼 oh_Maxy 的回复:
感觉这个写的不错,应该能解惑:http://blog.csdn.net/treeroot/article/details/96936
--------------------编程问答--------------------
引用 3 楼 xulei8908171 的回复:
单纯的接口编程  怎么用接口调出clone方法   

Quote: 引用 2 楼 oh_Maxy 的回复:

感觉这个写的不错,应该能解惑:http://blog.csdn.net/treeroot/article/details/96936

接口是为了多态,为了进一步抽象一个问题。接口本身如果不被实现,不能实例化的话,它什么都不是。 --------------------编程问答-------------------- 接口描述调用者可以使用的方法,接口中没有的功能无法使用,也不需要实现。
另外protected是子类可见,不写才是包可见(default) --------------------编程问答-------------------- 第一 本接口继承了cloneable接口  这个就意味着  
本接口是在设计的时候就需要提供复制的功能的
当你实现这个接口的时候 在实际的类中是可以实现 clone这个方法的(实际上 他确实也覆写这个clone方法)  
但是如果我们只调用  A接口(上面我有写A接口继承自cloneable)的话  由于Cloneable中的clone方法是protected的  所以通过接口 
在外部  并不能调出clone方法A
第二 protected是  子和兄弟 都可见,至于兄弟 就是包内的其他类 至于不写的默认  确实是包内可见

解决方案:
就是能在接口添加一个抽象函数cloneobject()(public) 实现的时候 调用 cloneable接口的clone方法(protected) --------------------编程问答-------------------- 等等,clone()方法并没有在Cloneable接口中定义,它是Object类中的方法,这个应该说是JAVA API设计中比较郁闷的地方,类似的还有Serializable接口与序列化/反序列化的方法,应该说是针对特殊需求做的变通,不讨论了。
接口中所有的方法可见性必须是public,所以不可能出现问题中方法不可见的情况。现在的问题就在于Cloneable接口中没有clone()方法,所以谈不上可见性。
解决方案:接口A中添加public Object clone()方法 --------------------编程问答-------------------- 不要纠结clone。。这是个API的设计缺陷 --------------------编程问答--------------------
引用 7 楼 fanslate 的回复:
等等,clone()方法并没有在Cloneable接口中定义,它是Object类中的方法,这个应该说是JAVA API设计中比较郁闷的地方,类似的还有Serializable接口与序列化/反序列化的方法,应该说是针对特殊需求做的变通,不讨论了。
接口中所有的方法可见性必须是public,所以不可能出现问题中方法不可见的情况。现在的问题就在于Cloneable接口中没有clone()方法,所以谈不上可见性。
解决方案:接口A中添加public Object clone()方法


你说到 序列化 我想起来了 
他的类继承了Externalizable这个接口  
后来我直接想用序列化去  复制  一个当前的对象 
但是return回来的东西不对  我想问下   
像这种东西  我该注意到什么
我现在就想 复制下   sip的请求消息   能让他发送两次  
这个东西  比较郁闷   
一开始用的cloneable的里那个  结果我去查了下  发现是浅层克隆
后来看了下深度的克隆方法   大概有  序列化 和反射
但是 反射不回克隆父类的内容  
而序列化 我又没有成功

大概能使用什么其他的方法吗   
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,