주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 가끔 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우가 있습니다. 단 하나만 생성된다고 해서 이 객체를 '싱글톤(Singleton)'이라고 합니다. 싱글톤을 만들려면 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 합니다. 생성자를 외부에서 호출할 수 없도록 하려면 생성자 앞에 private 접근 제한자를 붙여주면 됩니다. 그리고 자신의 타입인 정적 필드를 하나 선언하고 자신의 객체를 생성해 초기화합니다. 참고로 클래스 내부에서는 new 연산자로 생성자 호출이 가능합니다. 정적 필드도 private..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 정적(static)은 '고정된'이란 의미를 가지고 있습니다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메서드를 말합니다. 이들을 각각 정적 필드, 정적 메서드라고 합니다. 정적 멤버는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 합니다. 정적 멤버 선언 정적 필드와 정적 메서드를 선언하기 위해서는 static 키워드를 추가적으로 붙입니다. 다음은 정적 필드와 정적 메서드를 선언하는 예입니다. public class Car { static int s..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 클래스에는 객체가 가져야 할 구성 멤버가 선언됩니다. 구성 멤버에는 필드(Field), 생성자(Constructor), 메서드(Method)가 있습니다. 이 구성 멤버들은 생략되거나 복수 개가 작성될 수 있습니다. public class ClassName { //필드 int fieldName; //생성자 ClassName() { ... } //메서드 void methodName() { ... } } 1. 필드 필드는 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳입니다. 선언 형태는 변수와 비슷하지만, 필드를 변수라고 부..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 클래스를 선언한 다음, 컴파일을 했다면(이클립스에서는 저장) 객체를 생성할 설계도가 만들어진 셈입니다. 클래스로부터 객체를 생성하는 방법은 다음과 같이 new 연산자를 사용하면 됩니다. new 클래스이름(); new는 클래스로부터 객체를 생성하는 연산자입니다. new 연산자 뒤에는 '생성자'가 오는데, 생성자는 '클래스 이름()'의 형태를 가지고 있습니다. new 연산자로 생성된 객체는 메모리 힙(heap) 영역에 생성되고, new 연산자는 힙 영역에 생성된 객체의 주소를 반환합니다. 이 주소를 참조 타입인 클래스 변수에 저장해 두..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 객체와 클래스 사람들이 자동차를 이용하기 위해서는 우선 자동차를 만들어야 합니다. 그리고 자동차를 만들기 위해서는 자동차 설계도가 필요합니다. 객체 지향 프로그래밍에서도 마찬가지입니다. 메모리에서 사용하고 싶은 객체가 있다면 우선 설계도를 만들어야 합니다. 자바에서는 이 설계도를 '클래스(class)'라고 합니다. 클래스에는 객체를 생성하기 위한 필드와 메서드가 정의되어 있습니다. 클래스로부터 만들어진 객체를 해당 클래스의 '인스턴스(instance)'라고 합니다. 자동차 객체는 자동차 클래스의 인스턴스인 셈입니다. 그리고 클래스로..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 캡슐화 캡슐화란 객체의 필드, 메서드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말합니다. 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메서드만 이용할 수 있습니다. 필드와 메서드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는 데에 있습니다. 자바는 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해서 접근 제한자를 사용합니다. 접근 제한자는 객체의 필드와 메서드의 사용 범위를 제한함으로써 외부로부터 보호합니다. 상속 객체 간의 관계에서 상속 관계..