您的位置:首页 > 移动开发 > Objective-C

顿悟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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: