-
자바의 기본(클래스, 메서드, 필드, 생성자, 인스턴스)백엔드/자바 2020. 7. 27. 06:08
1. 자바의 기본
자바 프로그램은 최소 한개의 클래스로 구성된다.
그리고 그 클래스는 한 개 이상의 필드(field) 또는 메서드(method)로 구성된다.
기본 구조는 다음과 같다.
public class Test { // 클래스 선언 : 어떠한 객체의 변수, 메서드의 집합 int a = 1; // 필드 부분 : 객체 데이터가 저장되는 곳 public void method() { // 메서드 부분 : 객체의 동작을 수행하는 부분 System.out.println(a); } }
2. 클래스와 객체(Class&Object)
자바에서 클래스(Class)와 객체(Object)를 이해하는 것은 굉장히 중요하다.
클래스란 객체를 만들기 위한 기본적인 틀이고, 객체는 실제로 이 틀을 이용해 만들어낸 결과물을 말한다.
컴퓨터적인 시각으로 보면 객체는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것.
프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미.
그리고 이러한 클래스로부터 객체를 만드는 과정을 인스턴스화(Instantiate)라고 한다.
어떤 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(Instantance)라고 한다.
3. 필드와 메서드
기본 클래스 안에는 2가지 구성 요소가 있다. 바로 필드, 메서드다.
그리고 이 구성요소들을 멤버라고 부른다.
(1) 필드(field)
필드는 즉 해당 클래스 내의 정의된 변수를 의미한다.
멤버변수 또는 인스턴스 변수라고도 한다.
그리고 이 변수는 객체의 특성을 나타낸다.
(2) 메서드(method)
멤버 함수라고도 하는 메서드는 객체가 행해야 하는 작업을 기술해놓은 문서를 말한다.
4. 비유하기
1,2,3번을 종합해서 비유하자면 다음과 같다.
public class Human { // 클래스 선언 (class + 클래스명) int height; // 필드, 변수 선언 (자료형 + 변수명) int weight; int personality; void go_to_school(){ // 메서드, 메서드 선언 ( 리턴을 원하는 자료형 + 메서드명 + ( ) ) } void study_computer(){ } }
'인간'이란 종을 만들 수 있는 클래스를 만들었을 때
'필드' 즉 변수는 인간의 키, 몸무게, 성격 등과 같은 인간에 대한 속성이고
'메서드'는 그 인간이 해야하는 행동에 대한 명령을 말한다.
그리고 클래스를 이용해 다른 존재와 식별 가능한 만들어낸 개별적인 '인간'을 객체라고 한다.
인간을 만드는 클래스를 통해 객체인 '철수'를 만들어내면
철수란 인간의 특징은 변수를 통해 나타나고 철수가 해야하는 일은 메서드에 적혀있는 것이다.
그리고 이러한 철수를 만들어내는 과정을 인스턴스화, 만들어진 결과물인 철수는 인스턴스이다.
우리는 이러한 클래스 내 객체 생성과 객체의 특성, 객체에 대한 명령을 조합하여
하나의 커다란 프로그램을 만들어낼 수 있다.
5. 객체와 생성자
객체는 클래스를 통해 만들어진 결과물로서 클래스 간 연결 고리 및 클래스를 제어하는 역할을 한다.
클래스가 설계도라면 객체는 설계도에 맞게 지어진 일종의 집이라고 생각하면 된다.
설계도가 실재하지 않는데 반해, 객체는 그걸 실재화 시킨 것이기 때문이다.
객체는 이렇게 만든다.
public class main { public static void main(String[] args) { Car A = new Car(); // 참조변수 자료형 + 참조변수명 = new (메모리 내 인스턴스 생성) + Car() (생성자 호출) } }
"참조 변수 자료형 + 참조변수명 = new Car 생성자"
new로 인스턴스가 저장될 메모리를 확보하고, 생성자를 불러오고 이 인스턴스의 주소값을 참조변수에 저장해준다.
6. 생성자(Constructor)란?
클래스 내에서 인스턴스가 생성될 때 호출되는 특별한 형태의 '인스턴스 초기화 메서드'이다.
인스턴스가 생성될 때 같이 생성되어 인스턴스 변수들을 초기화(0으로 만드는게 아니라 값을 지정)하거나
인스턴스 생성시 실행할 작업 등을 위해 사용된다.
형태는 다음과 같다.
● 생성자의 이름은 클래스의 이름과 같아야 한다.
● 생성자는 리턴값이 없다.
생성자는 아무런 매개변수도 받지 않는 기본 생성자와
매개변수를 받아서 위에서 설명한 것처럼 인스턴스 초기화 작업을 할 수 있는 생성자 둘로 나뉜다.
'백엔드 > 자바' 카테고리의 다른 글
제어자(Modifier) (0) 2020.07.27 객체(object)에 대해서 (0) 2020.07.27 자바(Java) 메모리 구조 / Runtime Data Area (1) 2020.07.27 자바 가상 머신 (JVM)에 대해서 (0) 2020.07.27 자바 개발 3요소 JDK / JRE / JVM (0) 2020.07.26