JAVA의 객체지향 프로그래밍 기초부분을 정리
우리가 주변에서 흔히 볼 수 있는 모든 실재하는 어떤 대상을 프로그래밍 언어에서는 객체(Object)라 부른다.
컴퓨터 프로그래밍에서 일련의 명령어들의 나열을 통해 컴퓨터에게 말을 건네는 절차적 프로그래밍 방식과는 다르게,
객체지향형 프로그래밍은 실제 사물의 속성(state)과
기능(behavior)을 분석한 후에 이것을 프로그래밍의 변수와 함수로 정의한 것
객체 지향 접근 방식의 핵심 개념은 복잡한 문제를 더 작은 객체로 분해하는 것
클래스(Class)란 객체를 ‘정의한 설계도(blueprint)' 또는 '틀(frame)’이라 정의할 수 있습니다.
즉, 클래스는 객체를 생성하는데 사용되며, 반대로 객체는 클래스에 정의되고 설계된 내용 그대로 생성됩니다.
EX) 집의 설계도와 실제 집의 관계
어떤 집에 대한 설계도(클래스)가 먼저 정의되어 있고, 이 설계도를 통해 각각의 집들이 만들어졌습니다.
이렇게 클래스를 통해 생성된 객체를 우리는 해당 클래스의 인스턴스(instance)라 부릅니다.
또한 클래스로부터 객체를 만드는 과정을 우리는 인스턴스화(instantiate)라 지칭합니다.
객체는 모든 인스턴스를 포괄하는 넓은 의미를 가지고 있는 반면,
인스턴스는 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조한다는 데 그 차이가 있다고 할 수 있습니다.
객체 : 모든 인스턴스를 대표하는 포괄적인 의미
인스턴스 : 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미
객체는 크게 속성과 기능이라는 두 가지 구성요소로 이뤄져있습니다.
속성과 기능은 각각 필드와 메서드로 정의되는데,
하나의 객체는 다양한 속성과 기능의 집합으로 이뤄져 있습니다.
속성과 기능은 이너클래스와 함께 객체의 멤버(member)라 부릅니다.
클래스 변수 = new 클래스();
먼저 특정 클래스 타입의 참조변수를 선언합니다. 2. new 키워드와 생성자를 통해 인스턴스를 생성하여 참조변수에 할당합니다.
여기서 참조 변수는 실제 데이터 값이 아니라 실제 데이터가 저장되어 있는 힙 메모리의 주소값을 가리킵니다.
new 키워드는 생성된 객체를 힙 메모리에 넣으라는 의미를 가지고 있는데
생성자(클래스와 동일한 이름을 가졌지만 뒤에 소괄호가 붙음)를 통해 객체가 만들어지면 해당 객체를 힙 메모리에 넣는 역할을 수행하게 됩니다.
클래스 변수 = new 클래스();
Person p = new Person();
생성자로 만들어진 인스턴스는 힙 메모리 영역에 들어가며 객체 내부에는 클래스의 멤버들이 위치
참조변수는 객체의 실제 값이 아닌 힙에 저장되어 있는 주소값을 가리키게 됨
메서드 구현 코드는 클래스 영역에 저장되고 객체 안에서는 그 위치를 가리키고 있다.
즉 같은 클래스로 만든 모든 객체는 동일한 메서드 값을 공유하기 때문에
여러 번 같은 메서드를 선언해주는 것이 아니라 한번만 저장해두고 필요한 경우에만 클래스 영역에 정의된 메서드를 찾아 사용
생성된 객체에서 필드값은 실제 저장공간이 객체 내부에 있다는 것과
메서드는 다른 영역에 하나만 저장해놓고 공유
https://brunch.co.kr/@oemilk/120