顿悟JAVA,自己实现Object的Clone的约束关系(上)
2013-08-25 14:13
465 查看
因protected 的理解,顿悟一些JAVA的原理,模拟了Object类的子类为什么在调用clone方法前实现Cloneable接口。
这里不解释 ,上代码先。
这里不解释 ,上代码先。
运行效果
文件结构
调用类
package com.tarena.android.javabasic.useInterface; public class UseInterface { public static void main(String[] args) { SubclassFatherHaveAinterfaceTestA a = new SubclassFatherHaveAinterfaceTestA(); SubclassFatherHaveAinterfaceTestB b = new SubclassFatherHaveAinterfaceTestB(); try{ a.LikeClone(); b.LikeClone(); }catch(Exception e){ System.out.println(e.getMessage()); } } }
接口
package com.tarena.android.javabasic.useInterface; public interface LikeCloneable { //啥也没有 和 Cloneable一样的 }
基类
package com.tarena.android.javabasic.useInterface; public class myclassUseFace { //模仿Object 类来实现自己的clone规则,子类必须实现某个接口,这里是LikeCloneable protected void LikeClone() throws CloneNotSupportedException { if(this instanceof LikeCloneable) { System.out.println("必须实现LikeCloneable接口才能调用我,这个对象显然是实现了这个接口才看到我"); } else { CloneNotSupportedException e = new CloneNotSupportedException("没有实现接口的惩罚"); throw e; } } }
子类1
package com.tarena.android.javabasic.useInterface; public class SubclassFatherHaveAinterfaceTestA extends myclassUseFace implements LikeCloneable { public void LikeClone(){ try { super.LikeClone(); } catch (CloneNotSupportedException e) { System.out.println(this.getClass().getName()+ "如果本对象的类内有实现LikeCloneable接口,那么这一句话就会出现"); } } }
子类2
package com.tarena.android.javabasic.useInterface; public class SubclassFatherHaveAinterfaceTestB extends myclassUseFace { public void LikeClone(){ try { super.LikeClone(); } catch (CloneNotSupportedException e) { System.out.println(this.getClass().getName()+ "如果本对象的类内有实现LikeCloneable接口,那么这一句话就会出现"); e.printStackTrace(); } } }
相关文章推荐
- 顿悟JAVA,自己实现Object的Clone的约束关系(下)
- [置顶] 顿悟JAVA,自己实现Object的Clone的约束关系(上)
- Object.clone()方法引申出的浅克隆、深克隆、java原型模式的实现、不可变类的实现
- (3) java.lang.Object.clone()方法 以及 深拷贝浅拷贝 及其 实现
- Java实现深、浅Clone
- java 接口 实现和继承关系
- 使用spring实现事务管理(@transactional)的遇到的两个异常:java.lang.noclassdeffounderror:org/objectweb.asm
- [Java基础要义] Java语言中Object对象的hashCode()取值的底层算法是怎样实现的?
- 总结java实现八大排序算法及之间的关系
- 自己实现JAVA线程池
- Flex Java Object对应关系
- java实现map和object互转的三种方法
- java自己实现顺序线性表ArrayList
- Java中将实现string到JSONObject的转换
- 自己用java实现飞鸽传书 1 - 实现socket通信
- 【java集合】自己实现简易的HashMap
- java实现接口与继承的关系
- java实现map和object互转的三种方法
- 在XML中如何实现主外键约束关系
- 自己用java实现飞鸽传书 2 - 实现文件传输