中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
泗洪县| 蓬莱市| 台北市| 浏阳市| 成武县| 兰溪市| 泾川县| 越西县| 鄂伦春自治旗| 加查县| 涡阳县| 城口县| 山阴县| 高州市| 晋城| 东港市| 贵溪市| 万州区| 揭阳市| 澳门| 尉氏县| 中牟县| 济南市| 临泉县| 肇源县| 霍邱县| 玉树县| 湘乡市| 灌南县| 疏勒县| 从江县| 齐齐哈尔市| 娱乐| 宕昌县| 杨浦区| 太原市| 云安县| 奎屯市| 利辛县| 麻栗坡县| 庐江县|