接口中继承Cloneable接口怎么写?

bnuf 2011-12-10 04:42:38
比如
interface InA extends Cloneable {
public void method1();
}

public Class C1 implements InA {

}

public Class C2 {
public static void main(String[] args) {
InA a = new C1();
InB = a.clone(); //出错,不能这样写,需要怎么实现这个功能?
//提示clone()方法不存在
}
}
...全文
230 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bnuf 2011-12-10
  • 打赏
  • 举报
回复
这个interface InA extends Cloneable中的extends Cloneable是不是没意义啊?还是需要在接口里面写上clone方法
[Quote=引用 6 楼 huntor 的回复:]
clone方法在Object类中,不过是protected限定

Java code
interface InA extends Cloneable {
public void method1();
public Object clone() throws CloneNotSupportedException;
}

class C1 implements InA {
……
[/Quote]
bnuf 2011-12-10
  • 打赏
  • 举报
回复
明白了,谢谢
[Quote=引用 6 楼 huntor 的回复:]

clone方法在Object类中,不过是protected限定

Java code
interface InA extends Cloneable {
public void method1();
public Object clone() throws CloneNotSupportedException;
}

class C1 implements InA {
……
[/Quote]
huntor 2011-12-10
  • 打赏
  • 举报
回复
clone方法在Object类中,不过是protected限定

interface InA extends Cloneable {
public void method1();
public Object clone() throws CloneNotSupportedException;
}

class C1 implements InA {
public void method1(){}
public Object clone() throws CloneNotSupportedException {return super.clone();}
}

public class C2 {
public static void main(String[] args) throws Exception {
InA a = new C1();
Object b = a.clone(); //出错,不能这样写,需要怎么实现这个功能?
System.out.println(a);
System.out.println(b);
}
}


bnuf 2011-12-10
  • 打赏
  • 举报
回复
主要是因为我想使用接口调用clone方法,而接口里面是不能override clone方法的,在具体实现的类中,我已经覆盖了clone方法。还有一点:cloneable和其他接口有点区别,他这里面没有clone方法,所以我不知道该怎么写,请教。谢谢回答。
[Quote=引用 1 楼 huntor 的回复:]

没有override
public Object clone()方法
[/Quote]
huntor 2011-12-10
  • 打赏
  • 举报
回复
必须override clone方法。Object里的 clone是protected修饰的。实现Clonable接口必须重写为public。
huntor 2011-12-10
  • 打赏
  • 举报
回复
实现 Cloneable接口

class XXX implements Clonable {

@Override public Object clone() { return super.clone(); }
}

必须的
bnuf 2011-12-10
  • 打赏
  • 举报
回复
我继承接口的时候不是已经继承了cloneable了吗?如果我在C1里面也继承clone方法,好像会出现别的错误[Quote=引用 1 楼 huntor 的回复:]

没有override
public Object clone()方法
[/Quote]
huntor 2011-12-10
  • 打赏
  • 举报
回复
没有override
public Object clone()方法

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧