불변 유형과 가변 유형 이해
객체 지향 프로그래밍에서 객체는 변경 능력에 따라 두 가지 유형으로 분류될 수 있습니다. 불변하고 변할 수 있습니다. 둘 사이의 차이점은 내부 구조와 할당 및 수정을 처리하는 방법에 있습니다.
불변 유형: 객체 내에서 값 보존
불변 유형은 값이 일단 생성되면 변경될 수 있습니다. 예를 들어, Float는 불변으로 간주됩니다. 제공된 예제에서 볼 수 있듯이 RoundFloat 클래스의 새 인스턴스를 생성해도 원래 부동 개체에는 영향을 미치지 않습니다. 이는 새 인스턴스가 고유한 메모리 위치를 가진 별개의 객체이기 때문입니다.
불변 유형은 메소드가 작동할 때에도 원래 상태를 유지합니다. 예를 들어 문자열 객체(dict)를 확장하거나 RoundFloat 클래스에 정수를 전달해도 원래 객체는 수정되지 않습니다. 대신 변경 사항이 적용되어 새 개체가 생성됩니다.
변경 가능한 유형: 개체 내의 동적 변경
반면 변경 가능한 유형은 내부적으로나 내부적으로 모두 변경될 수 있습니다. 할당을 통해. 질문에서 언급했듯이 SortedKeyDict_a의 예는 example() 메소드를 통해 내부 수정을 허용하는 객체를 보여줍니다.
메서드를 호출하지 않고 SortedKeyDict에 세트를 전달하면 원래 세트가 변경되지 않기 때문에 오류가 발생하지 않습니다. . 그러나 new와 함께 RoundFloat에서 정수를 사용하면 클래스 구조에서 수정이 허용되므로 오류가 발생하지 않습니다.
내부 수정과 참조 재할당
불변 유형과 가변 유형의 결정적인 차이점은 할당 및 수정 중 동작에 있습니다. 불변 유형은 객체의 참조를 변경하여 상태를 유지하는 반면, 가변 유형은 객체 자체를 수정합니다.
문자열, 목록, 함수 및 변수를 사용한 예를 통해 대답은 불변 유형이 객체 참조를 수정하더라도 초기 ID를 유지한다는 점을 강조합니다. 할당된 변수인 반면 가변 유형은 내부 변경을 나타내며 할당된 변수에 영향을 줍니다.
위 내용은 객체 지향 프로그래밍의 불변 유형과 가변 유형: 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!