public class Human extends Main implements Cloneable{
public String name;
public Human(){};
public Human(String input){
this.name = input;
}
}
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
try{
Scanner in = new Scanner(System.in);
String input = in.next();
Human h1 = new Human(input);
Human h2 = (Human) h1.clone();
System.out.println("Human original " + h1.name);
System.out.println("Human clone " + h2.name);
in.close();
} catch(Exception e){}
}
}
为什么Human类必须扩展Main?如果没有,Human h2 =(Human)h1.clone()将给出错误“Object类型的方法clone()不可见”
Human class扩展Main的重点是什么? Human类不需要从Main类继承任何东西。
答案 0 :(得分:2)
Object.clone();
受到保护,这意味着它对同一个包中的子类和类是可见的。如果您不展开Main
,则clone()
从Human
继承Object
(Main
不可见)后,Main
不可见。但是,扩展clone()
意味着Main
继承自public
,它位于同一个包中,使其可以访问。
但通常情况下,您要实施clone()
super.clone();
版Person.find({
"$or": [
{name: "John", lastname: "Doe"},
{name: "Alice", lastname: "Lorem"},
{name: "Bob", lastname: "Ipsum"}
]
})
,即使只是在其中调用$scope.hide_emptytable() = function{
return ($.trim($('.acf-dynamic-table .field').text())=="")
}
。
答案 1 :(得分:0)
Cloneable
和clone()
是Java早期版本的遗留设计错误;不要使用它们。
如果你想创建一个"克隆"一个实例,提供一个拷贝构造函数,并自己复制字段:
public Human(Human other) {
this.name = other.name;
}
Effective Java 中有一个项目详细描述了克隆的问题,以及为什么要避免它(也是described here)。