JAVA를 처음 배운다면 알아야할 용어가 참 많습니다. 평소에 사용하지 않는 단어들로 쉽게 외워지고 이해되지 않을 수 있습니다. 이를 위해 각 용어에 대한 설명과 예시를 알아보도록 하겠습니다.
클래스
클래스는 객체를 생성하기 위한 설계 도면 또는 템플릿으로, 객체의 속성(변수)과 동작(메서드)을 정의하는 데 사용됩니다. 클래스는 객체 지향 프로그래밍의 핵심 개념 중 하나입니다.
클래스는 객체를 만들기 위한 구조를 정의합니다. 이 구조는 객체가 가져야 할 상태(변수)와 동작(메서드)을 결정합니다. 클래스는 객체를 생성하기 위한 청사진으로 생각할 수 있습니다. 클래스는 코드의 재사용성과 유지보수성을 높이는 중요한 요소입니다.
예를 들어, “Person” 클래스를 가정해보겠습니다. 이 클래스는 사람의 속성과 동작을 정의할 수 있습니다. 클래스 내에는 사람의 이름, 나이, 주소 등과 같은 변수를 정의할 수 있고, 사람이 하는 행동에 대한 메서드를 정의할 수 있습니다. 클래스는 이러한 속성과 동작을 기반으로 객체를 생성할 수 있습니다. 예를 들어, “Person” 클래스의 인스턴스로 “John”이라는 이름의 사람 객체를 생성할 수 있습니다.
예시 코드
public class Person { // 클래스 정의 시작 // 멤버 변수 (속성) private String name; // 문자열 타입의 name 변수 // 생성자 (함수) public Person(String name) { // 매개변수를 받는 생성자 this.name = name; // 인스턴스 변수에 전달받은 값을 할당 } // 멤버 메서드 (동작) public void introduce() { // 자기소개 메서드 System.out.println("안녕하세요, 제 이름은 " + name + "입니다."); } // 클래스 내부의 함수 (정적 메서드) public static void sayHello() { System.out.println("안녕하세요!"); } public static void main(String[] args) { // main 함수 // 객체 (인스턴스) 생성 // 인스턴스는 객체를 생성하여 실제 개체가 되는 것, 실제 객체란 코드내에 작성된 것만이 아닌 실제 연산등에 사용되기 위해 준비된 것을 의미 Person person1 = new Person("Alice"); // Person 클래스의 인스턴스인 person1 객체 생성 Person person2 = new Person("Bob"); // Person 클래스의 인스턴스인 person2 객체 생성 // 객체 사용 person1.introduce(); // person1 객체의 introduce() 메서드 호출 person2.introduce(); // person2 객체의 introduce() 메서드 호출 Person.sayHello(); // Person 클래스의 정적 메서드인 sayHello() 호출 } } // 클래스 정의 종료
예시 코드 설명
- 클래스 (Class):
public class Person
으로 정의되어 있습니다. 클래스는 객체를 생성하기 위한 템플릿 또는 설계도입니다. 클래스 이름은Person
입니다. - 멤버 변수 (Member Variables):
private String name
으로 정의되어 있습니다.name
은 문자열 타입의 멤버 변수로, 객체의 속성을 나타냅니다.private
접근 제어자는 외부에서의 직접 접근을 제한합니다. - 생성자 (Constructor): 생성자는 객체의 인스턴스화 시에 호출되는 특별한 종류의 메서드입니다.
public Person(String name)
으로 정의되어 있습니다. 생성자는 객체를 초기화하는 역할을 합니다.name
을 매개변수로 받아 인스턴스 변수에 할당합니다. - 멤버 메서드 (Member Methods):
public void introduce()
으로 정의되어 있습니다.introduce()
메서드는 객체의 동작을 정의합니다. 이 메서드는 객체의 이름을 출력하는 역할을 합니다. - 클래스 내부의 함수 (Static Method):
public static void sayHello()
으로 정의되어 있습니다.sayHello()
는static
키워드로 정적 메서드로 선언되었습니다. 정적 메서드는 클래스 자체에 속하며, 객체 인스턴스를 생성하지 않고 호출할 수 있습니다. - 객체 (Instance):
Person person1 = new Person("Alice")
와Person person2 = new Person("Bob")
으로 객체가 생성됩니다.new
키워드를 사용하여 클래스로부터 객체를 생성합니다.Person
클래스의 인스턴스인person1
과person2
객체가 생성됩니다. - 객체 사용:
person1.introduce()
,person2.introduce()
,Person.sayHello()
과 같이 객체의 멤버 변수나 멤버 메서드에 접근합니다..
연산자를 사용하여 객체에 속한 멤버에 접근할 수 있습니다. - 객체 인스턴스 (Object Instance): 객체 인스턴스는 클래스로부터 생성된 실제 개체를 의미합니다. 클래스는 객체를 생성하기 위한 템플릿이며, 객체 인스턴스는 그 템플릿을 기반으로 실체화된 것입니다. 예를 들어, Person 클래스로부터 생성된 person1과 person2는 Person 클래스의 두 개의 객체 인스턴스입니다.
main
함수:public static void main(String[] args)
으로 정의되어 있습니다. 이 함수는 Java 프로그램의 시작점입니다.main
함수에서는 객체를 생성하고, 객체의 메서드를 호출하는 등의 작업을 수행합니다.
코드를 실행하면, 생성한 객체의 introduce()
메서드가 호출되어 “안녕하세요, 제 이름은 [이름]입니다.”라는 메시지가 출력됩니다. 또한, Person.sayHello()
가 호출되어 “안녕하세요!”라는 메시지가 출력됩니다.
클래스는 객체 지향 프로그래밍에서 중요한 개념이며, 코드를 구조화하고 모듈화하여 관리하기 쉽게 해줍니다. 클래스를 사용하여 객체를 생성하고, 해당 객체의 속성과 동작을 조작할 수 있습니다.
객체
객체는 클래스로부터 생성된 실체(인스턴스)를 의미합니다. 클래스는 객체를 생성하기 위한 템플릿이라고 설명한 바와 같이, 객체는 그 템플릿을 기반으로 실제로 메모리에 할당된 것을 말합니다.
객체는 속성과 동작을 가지며, 이는 클래스의 멤버 변수와 멤버 메서드에 해당합니다. 객체의 속성은 객체의 상태를 나타내며, 멤버 변수를 통해 저장됩니다. 객체의 동작은 객체가 수행하는 기능이며, 멤버 메서드를 통해 구현됩니다.
예를 들어, “Person” 클래스로부터 생성된 객체는 실제로 존재하는 사람을 나타냅니다. 이 객체는 “Person” 클래스에서 정의된 멤버 변수인 이름, 나이 등의 속성을 가지고 있습니다. 또한, “Person” 클래스에서 정의된 멤버 메서드인 “소개하기”나 “나이 계산하기”와 같은 동작을 수행할 수 있습니다.
객체는 개별적인 실체로, 독립적인 상태와 동작을 갖습니다. 다른 객체와는 독립적으로 상태를 유지하고 동작을 수행할 수 있습니다. 객체는 다른 객체와 상호작용하며, 데이터를 주고받거나 서로의 동작을 호출하는 등의 통신을 할 수도 있습니다.
객체 지향 프로그래밍에서는 객체를 중심으로 시스템을 모델링하고 문제를 해결합니다. 객체는 현실 세계의 개념을 프로그램으로 표현하여 코드를 구조화하고 유연하게 만들어줍니다.
변수
값을 저장하기 위한 공간입니다. 데이터를 임시로 저장하거나 처리할 때 사용합니다. 변수는 값을 변경할 수 있습니다. 예를 들어, int age = 20;
에서 age
는 변수이며, 20이라는 값을 저장하고 있습니다.
메서드
작업을 수행하기 위한 코드 블록입니다. 메서드는 특정한 동작을 수행하고 결과를 반환할 수 있습니다. 예를 들어, void printName(String name)
은 name
이라는 매개변수를 받아서 이름을 출력하는 메서드입니다.
메서드 앞에는 void 또는
멤버
클래스 안에서 정의된 변수와 메서드를 일컫습니다. 클래스는 멤버 변수와 멤버 메서드를 가질 수 있습니다. 멤버 변수는 해당 클래스의 객체가 갖는 상태를 나타내는 데이터를 저장하는데 사용되고, 멤버 메서드는 해당 클래스의 객체가 수행하는 동작이나 기능을 정의합니다.
인스턴스
클래스를 기반으로 메모리에 실제 객체를 생성하는 것을 말합니다. 클래스는 객체를 생성하기 위한 템플릿이고, 인스턴스는 그 템플릿을 토대로 생성된 객체를 의미합니다. 인스턴스는 클래스의 멤버 변수와 메서드에 접근할 수 있는 객체입니다.
이해를 돕기 위해 예를 들어보겠습니다. 예를 들어, Person
이라는 클래스가 있다고 가정해봅시다. 이 클래스는 name
과 age
라는 멤버 변수를 가지고 있고, sayHello()
라는 멤버 메서드를 가지고 있습니다. 이제 Person
클래스로부터 객체 인스턴스를 생성할 수 있습니다. 예를 들어, Person person1 = new Person();
이라고 하면, person1
은 Person
클래스의 인스턴스입니다. person1
객체는 name
과 age
라는 멤버 변수를 가지고 있고, sayHello()
라는 메서드를 호출할 수 있습니다.
요약하면, 변수는 값을 저장하는 공간, 메서드는 작업을 수행하는 코드 블록, 멤버는 클래스 안에서 정의된 변수와 메서드를 의미하며, 인스턴스는 클래스를 기반으로 메모리에 생성된 객체를 말합니다.
객체 인스턴스
객체 인스턴스는 클래스로부터 생성된 실제 개체를 의미합니다. 클래스는 객체를 생성하기 위한 템플릿이며, 객체 인스턴스는 그 템플릿을 기반으로 실체화된 것입니다. 예를 들어, Person 클래스로부터 생성된 person1과 person2는 Person 클래스의 두 개의 객체 인스턴스입니다.
각 객체 인스턴스는 자신만의 상태를 가지고 있을 수 있습니다. 이 상태는 클래스의 멤버 변수 (인스턴스 변수)를 통해 나타낼 수 있습니다. 예를 들어, Person 클래스의 멤버 변수인 name은 개별 객체 인스턴스마다 다른 값을 가질 수 있습니다. 따라서 person1과 person2의 name 값은 서로 다를 수 있습니다.
객체 인스턴스는 클래스에 정의된 멤버 메서드를 호출하여 동작을 수행할 수 있습니다. 예를 들어, person1.introduce()와 person2.introduce()는 각각 person1과 person2 객체 인스턴스의 이름을 출력하는 introduce() 메서드를 호출합니다.
객체 인스턴스는 독립적인 개체로 존재하며, 서로의 상태에 영향을 주지 않습니다. 각 객체 인스턴스는 자신의 데이터를 캡슐화하고, 필요한 경우에만 외부에 공개하는 객체 지향 프로그래밍의 핵심 개념 중 하나입니다.