91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java clone方法的默認實現是什么

小樊
86
2024-10-16 00:00:56
欄目: 編程語言

在Java中,clone()方法是Object類的一個protected方法,它的默認實現是淺拷貝(shallow copy)。這意味著它只復制對象本身和對象中的基本數據類型(如int、float等),而不會遞歸地復制對象內部的其他對象。如果對象內部還有引用類型字段,那么這些字段的值仍然是原來對象的引用,而不是新對象的引用。

對于實現Cloneable接口的類,可以通過重寫clone()方法來實現深拷貝(deep copy)。深拷貝會遞歸地復制對象內部的所有對象,新對象和原對象在內存中是完全獨立的。

以下是一個簡單的示例,說明clone()方法的默認實現:

class Person implements Cloneable {
    String name;
    int age;
    Address address;

    public Person(String name, int age, Address address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

class Address implements Cloneable {
    String street;
    String city;

    public Address(String street, String city) {
        this.street = street;
        this.city = city;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class Main {
    public static void main(String[] args) throws CloneNotSupportedException {
        Person person1 = new Person("Alice", 30, new Address("123 Main St", "New York"));
        Person person2 = (Person) person1.clone();

        System.out.println(person1.name); // Alice
        System.out.println(person2.name); // Alice

        person1.address.street = "456 Elm St";

        System.out.println(person1.address.street); // 456 Elm St
        System.out.println(person2.address.street); // 123 Main St
    }
}

在這個示例中,Person類和Address類都實現了Cloneable接口,并重寫了clone()方法。然而,由于clone()方法的默認實現是淺拷貝,所以person1person2address字段指向的是同一個Address對象。當我們修改person1address字段時,person2address字段也會受到影響。

0
临安市| 都安| 务川| 临洮县| 织金县| 荥阳市| 库伦旗| 会泽县| 延吉市| 宕昌县| 淮安市| 和田县| 哈密市| 尼木县| 通州区| 南汇区| 上犹县| 望奎县| 巴林右旗| 海门市| 张家港市| 乳山市| 佳木斯市| 桦川县| 虹口区| 黑龙江省| 平谷区| 博乐市| 阜城县| 河北区| 阳信县| 读书| 三门峡市| 玉山县| 永仁县| 恭城| 台北县| 郴州市| 高雄市| 鲁甸县| 绥化市|