亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
林西县| 七台河市| 鄂伦春自治旗| 余江县| 玉山县| 缙云县| 东辽县| 冀州市| 邮箱| 永川市| 邵东县| 神池县| 眉山市| 营口市| 兴义市| 运城市| 云梦县| 内江市| 花莲县| 扎兰屯市| 武宁县| 会理县| 米脂县| 商南县| 镇安县| 苍溪县| 肥城市| 金山区| 互助| 酉阳| 仁布县| 泌阳县| 大埔区| 福贡县| 洛阳市| 承德县| 岑溪市| 高尔夫| 河南省| 苍溪县| 英超|