gpt4 book ai didi

java - Object 类型的方法 clone() 不可见。扩展解决了

转载 作者:行者123 更新时间:2023-11-30 02:55:39 25 4
gpt4 key购买 nike

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 类扩展 Main 有何意义? Human 类不需要从 Main 类继承任何内容。

最佳答案

Object.clone(); 是 protected ,这意味着它对同一包中的子类和类可见。如果您不扩展 Main,则 clone() 不可见,因为 HumanObject 继承它(对 Main 不可见)。然而,扩展 Main 意味着 clone() 是从 Main 继承的,它位于同一个包中,因此可以访问。

但是,通常您会实现 clone()public 版本,即使只是在其中调用 super.clone(); .

关于java - Object 类型的方法 clone() 不可见。扩展解决了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37282404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com