Primitive 타입 흔히 기본형 타입으로 int, float, double, char, boolean 등의 타입이 해당됩니다. 기본형 타입의 변수는 값을 직접 가지고 있으며, 스택(Stack) 메모리에 저장됩니다. 이러한 변수들은 크기가 작기 때문에, 빠른 엑세스와 빠른 메모리 할당을 허용합니다. 예를 들어 int, float, double, char, boolean 은 고정된 크기에 공간을 차지하며, 변수에 값을 할당하면 해당 공간에 값을 직접 저장합니다. 메모리 할당과 해제가 빠르며 오버헤드가 적습니다. Reference 타입 참조 타입으로 객체, 배열 등이 해당됩니다. 참조형 타입의 변수는 해당 데이터의 주소를 저장하고 있으며, 그 주소는 스택(Stack) 영역에 저장되고 있습니다. 참조 타입 ..
equals 와 hashCode 는 둘 다 객체의 동등성 비교에 사용되는 메서드입니다. 하지만 두 메서드의 하는 역할과 사용되는 상황에서 차이가 있습니다. equals() equals 메서드는 두개의 객체가 논리적으로 동일한지 확인하는 데 사용됩니다. 즉 두객체의 내용(값)이 동일한지 비교합니다. 따라서 equals 메서드를 오버라이딩하여 객체들의 내용을 비교하는 방법을 정의할 수 있습니다. (대부분의 IDE 에서 equals hashCode 메서드를 오버라이딩 하는 기능을 제공합니다) 예를 들어서, 사용자 정의 클래스에서 equals 를 오버라이딩 할 때는, 보통 객체의 필드들을 비교하여 같은 내용인지를 판단하는 로직을 구현합니다. 해시 함수 hashCode 메서드를 알기 전에 해시 함수에 대한 기본적..
조영호님의 책 오브젝트를 보며 정리한 내용입니다. 문제가 될 시 해당글 삭제하겠습니다. 상속의 2가지 용도 타입 계층 구현 : 부모 클래스는 일반적인 개념을 구현하고, 자식 클래스는 특수한 개념을 구현한다. 코드 재사용 : 상속만으로 자식 클래스는 부모 클래스의 코드를 재사용 할 수 있다. 하지만 부모 클래스와 자식 클래스가 강하게 결합된다는 단점 때문에, 객체 지향에서 권장되는 방법은 아니다. → 상속을 사용하는 일차적인 목표는 코드 재사용이 아닌 타입 계층을 구현하는 것이다. → 이를 위해서 객체의 행동을 기반으로 타입 계층을 구성해야 한다. 타입 개념 관점의 타입 → 공통의 특징을 공유 타입 : 우리가 인식하는 객체들에 적용하는 개념이나 아이디어를 가리켜 타입이라고 부른다. 심볼(symbol) : ..
조영호님의 책 오브젝트를 보며 정리한 내용입니다. 문제가 될 시 해당글 삭제하겠습니다. 상속의 목적은 코드 재사용이 아닌, 타입 계층의 구조화를 위해서 사용해야한다. → 다형성을 위한 서브타입 계층을 구축하는 것의 진정한 목적을 가지고 있어야만 한다! 관점에 따른 상속 데이터 관점의 상속 : 자식 클래스의 인스턴스 안에 부모의 인스턴스를 포함하는 것. 행동 관점의 상속 : 부모 클래스가 정의한 일부 메서드를 자식 클래스의 메서드로 포함하는 것. → 런타임에 시스템이 자식 클래스에 정의되지 않은 메서드가 있을 경우, 이 메서드를 부모 메서드에서 탐색한다. → 객체의 경우에는 서로 다른 상태를 저장할 수 있도록 인스턴스별로 독립적인 메모리를 할당받아야한다. 하지만 메서드의 경우에는 동일한 클래스의 인스턴스끼..