클래스의 개념
객체object는 사용할 수 있는 실체를 의미하며 클래스는 객체를 만들기위한 설계도와 같다. 1개의 클래스를 이용해 여러 개의 객체를 만들 수 있다. 자바는 기본 문법 요소로써 클래스를 사용한다. 클래스는 다양한 자료형의 데이터를 묶어 관리할 수 있을 뿐 아니라 데이터를 처리하는 다양한 기능까지 함께 관리하는 문법 요소다. 구조체에서 한 단계 발전한 형태라고 할 수 있다. 참고로 프로그램 문법 요소는 변수, 배열, 구조체, 클래스 순으로 발전해왔다.
절차지향의 개념
객체지향의 개념을 사용하기 전 대부분의 프로그램은 절차지향형으로 구현했다. 절차지향형 프로그래밍PP : Procedural Programming은 순서에 맞춰 단계적으로 실행하도록 명령어를 나열하는 방식이다. 기능 중심 프로그래밍이라고도 한다. 절차지향형 프로그램은 말 그대로 이야기를 순서대로 써내려 나가듯이 프로그램을 구성하는 방식이다. 제어문을 사용해 실행 순서를 바꿀 수는 있지만, 그것조차도 제어문의 절차로 진행되는 것이다.
객체지향의 개념
클래스를 사용한 후에는 객체지향형 프로그래밍OOP : Object-Oriented Programming방식이 주로 사용되는데, 이는 프로그램을 객체 단위로 수행하는 방식이다. 객체 중심 프로그래밍이라고도 한다. 객체지향형 프로그램은 이 프로그램에서 사용되는 객체를 생성하고 각 객체에 포함되는 데이터와 기능을 상호 호출해서 프로그램하는 구성하는 방식이다. 각 객체에 포함되는 데이터는 '속성' 또는 '필드'라고 하고, 기능은 메서드라고 한다.
자바에서 제공하는 객체지향 문법 요소
객체지향 프로그래밍 언어인 자바는 프로그램을 객체 단위로 구성해 상호 연동시켜 프로그램을 실행한다. 자바에서 제공하는 객체지향 문법 요소는 크게 클래스와 인터페이스가 있고, 클래스는 다시 일반 클래스와 추상 클래스로 나뉜다.즉, 클래스나 인터페이스를 활용해 객체를 직접적 또는 간접적으로 만들고, 이를 활용해 프로그램을 실행한다.
클래스의 구조
클래스는 class 키워드와 함께 클래스명을 표기한다. 클래스명은 통상 대문자로 시작한다. 클래스는 외부 구성 요소와 내부 구성 요소로 나뉜다. 외부에는 3가지 구성 요소만 올 수 있다.
① 패키지package : 프로젝트를 생성할 때 패키지를 지정했다면 반드시 첫 번째 줄에(주석은 제외) 위치해야 한다. 패키지를 생성하지 않으면(디폴트 패키지 사용) 생략한다.
② 임포트import : 다른 패키지의 클래스를 사용하고자 할 때 포함된다. 패키지 다음에 위치한다.
③ 외부 클래스external class : 클래스의 외부에 또 다른 클래스가 포함될 수 있다. 1개의 .java 파일에 여러 개의 클래스가 포함될 수 있다. 단, 외부 클래스에 public 키워드는 붙일 수 없다.
내부 구성 요소는 4가지 구성 요소가 포함될 수 있다.
① 필드field : 클래스의 특징(속성)을 나타내는 변수다.
② 메서드method : 클래스가 지니고 있는 기능(함수)이다.
③ 생성자constructor : 클래스의 객체를 생성한다.
④ 이너 클래스inner class : 클래스 내부에 포함된 클래스를 말한다.
4가지 구성 요소들 중 생성자를 제외한 3가지 요소를 '클래스의 멤버'라고 한다.
클래스와 객체의 관계
클래스의 모든 특징(필드)와 기능(메서드)들을 사용하려면 클래스를 이용해 객체를 만든 후 그 객체 속의 필드와 메서드 등을 사용해야 한다. 클래스에서 객체를 만드는 과정은 생성자가 수행한다. 클래스의 생성자로 객체를 만드는 과정을 '인스턴스화instantiation'라고 하고, 인스턴스화로 만들어진 객체를 '인스턴스instance'라고 한다. 객체 속에는 클래스의 내부 구성 요소 중 생성자를 제외한 나머지 요소가 포함되는데, 이를 '인스턴스 멤버'라고 한다. 정리하면, 클래스는 바로 사용할 수 없고 반드시 객체를 생성해 객체 안에 있는 필드, 메서드 및 이너 클래스를 사용해야 한다.
객체 생성하기
클래스명 참조변수명 = new 생성자()
모든 클래스는 객체를 new 키워드로 생성할 수 있다. 생성자는 클래스명 뒤에 괄호를 붙힌 형태다. 객체를 생성하게 되면 클래스는 메모리의 클래스 영역, 참조 변수는 스택 영역에 들어간다. 생성자로 만든 객체는 힙 메모리에 들어가고 위칫값을 참조 변수에 저장한다. 객체 내부에는 클래스의 멤버(필드, 메서드, 이너 클래스)가 위치한다. 그런데 메서드를 살펴보면, 실제 메서드 구현 코드는 클래스 영역 안에 저장해 놓고, 객체 안에서는 메서드 영역의 위차만 가리키고 있다. 1개의 클래스로 만든 모든 개체는 속성(필드)은 달라도 기능(메서드)는 동일하기 때문에 객체를 100개 만들어도 메서드는 한 번만 만들면 된다.
객체 활용하기
객체를 활용한다는 것은 객체 내부의 멤버를 사용한다는 의미다. 필드를 사용한다는 것은 필드에 값을 넣거나 읽어온다는 것, 메서드를 사용한다는 것은 해당 메서드를 호출한다는 것을 말한다. 자바에서는 힙 메모리에 직접 접근할 수 있는 방법이 없으며, 참조 변수를 통해서만 객체에 접근할 수 있다. 이때 사용하는 것이 포인트 연산자(.)다. 포인트 연산자의 의미는 해당 위치에 있는 객체 안을 보라는 의미다. 다음과 같은 형태로 사용할 수 있다.
참조변수명.필드명
참조변수명.메서드명()
각각 참조 변수가 가리키는 곳의 객체 안에 있는 필드값 또는 메서드를 나타낸다.
'development > Java' 카테고리의 다른 글
JAVA 공부 해볼까 (12) (0) | 2021.12.24 |
---|---|
JAVA 공부 해볼까 (11) (0) | 2021.12.20 |
JAVA 공부 해볼까 (9) (0) | 2021.12.16 |
JAVA 공부 해볼까 (8) (4) | 2021.12.14 |
JAVA 공부 해볼까 (7) (2) | 2021.12.13 |