2022.09.02 Java 객체지향 프로그래밍 기초(1)
1. 객체지향 프로그래밍 언어
- 객체지향 프로그래밍 언어는 현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 기계의 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성하는 기법 이다.
- 프로시저보다는 명령과 데이터로 구성된 객체를 중심으로 하는 프로그래밍 기법이다.
- 한 프로그램을 다른 프로그램에서 이용할 수 있도록 한다.
- 객체지향 프로그래밍 언어의 종류
JAVA · 분산 네트워크 환경에 적용이 가능함
· 멀티스레드 기능을 제공하므로 여러 작업을 동시에 처리할 수 있음
· 운영체제 및 하드웨어에 독립적이며, 이식성이 강함C++ · C 언어에 객체지향 개념을 적용한 언어임
· 모든 문제를 객체로 모델링하여 표현함Smalltalk · 1세대 객체지향 프로그래밍 언어로, 순수한 객체지향 프로그 래밍 언어임
· 최초로 GUI를 제공하였음
2. Java 클래스의 개요
클래스는 객체 생성을 위한 필드(속성)와 메소드(함수)를 정의하는 설계도로, Java는 아무리 작은 프로그램이라도 클래스를 만들어서 사용해야 한다.
- 클래스를 만들어 사용하는 순서
- 클래스 이름을 정하고 객체 생성을 위한 필드와 메소드를 정의한다. 마치 자동차를 만들기 위한 설계도와 같다. 이때 사용하는 명령이 class 이다.
- 객체를 생성한다. 자동차 설계도로 자동차를 만들어야 사용할 수 있듯이 클래스를 이용해 객체를 생성해야 프로그램에서 사용할 수 있다. 이때 사용하는 명령이 new 이다.
- 생성된 객체들을 이용하여 프로그램을 코딩하면 된다.
- 객체와 인스턴스의 차이
객체는 모든 인스턴스를 포괄하는 넓은 의미를 가지고 있는 반면, 인스턴스는 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조 - 클래스의 구성요소와 기본 문법
클래스는 기본적으로 class 키워드를 사용하여 정의
class 클래스명 { // 클래스 정의
int var = 0; // (필드)
void printX() {...} // (메서드)
클래스명{...} // (생성자)
class 클래스명2 // (이너 클래스)
}
1. 필드 : 클래스의 속성을 나타내는 변수
2. 메서드 : 클래스의 기능을 나타내는 함수
3. 생성자 : 클래스의 객체를 생성하는 역할
4. 이너 클래스 : 클래스의 내부 클래스
*생성자를 제외한 나머지 3가지 요소를 멤버라 합니다.
3. Java 객체의 개요
- 객체의 구성요소와 기본 문법
객체의 생성은 다음과 같이 new 키워드를 사용하여 다음과 같이 실제 객체를 생성할 수 있습니다. 그리고 객체를 생성한 후에는 포인트 연산자(.)를 통해 해당 객체의 멤버에 접근이 가능합니다.
class 클래스명{
public static void main(String[] args){
클래스 객체 = new 클래스();
}
- 객체의 생성
클래스명 참조_변수명; // 인스턴스를 참조하기 위한 변수 선언
참조_변수명 = new 생성자(); // 인스턴스 생성 후 , 객체의 주소를 참조 변수에 저장
-> 클래스명 참조_변수명= new 생성자();
4. 필드 (Field)
필드는 ‘클래스에 포함된 변수'를 의미하는 것으로 객체의 속성을 정의할 때 사용됩니다.
자바에서 변수는
클래스 변수(cv, class variable)
인스턴스 변수(iv, instance variable)
지역 변수(lv, local variable)
이 중 우리가 필드라 부른 것은 클래스 변수와 인스턴스 변수이며,
이 둘은 다시 static 키워드의 유무로 구분할 수 있습니다.
static 키워드가 함께 선언된 것은 클래스 변수, 그렇지 않은 것은 인스턴스 변수입니다.
그리고 이 두 가지 변수 유형에 포함되지 않고 메서드 내에 포함된 모든 변수를 지역변수라 부릅니다.
필드는 힙 메모리 영역에 저장, 지역 변수는 스택 메모리 영역에 저장
class Example { // => 클래스 영역
int instanceVariable; // 인스턴스 변수
static int classVariable; // 클래스 변수(static 변수, 공유변수)
void method() { // => 메서드 영역
int localVariable = 0; // 지역 변수. {}블록 안에서만 유효
}
}
*지역 변수는 선언 시 반드시 초기화 실행
5. 메서드 (Method)
메서드는 "특정 작업을 수행하는 일련의 명령문들의 집합" 을 의미하며, 클래스의 기능에 해당하는 내용들을 담당합니다.
메서드는 다시 메서드 시그니처와 메서드 바디로 구분할 수 있습니다.
자바제어자 반환타입 메서드명(매개 변수) { // 메서드 시그니처
메서드 내용 // 메서드 바디
}
메서드의 반환타입이 void가 아닌경우에는 메서드 바디 ({}) 안에 반드시 return 문이 존재해야 합니다.
여기서 결과값은 반드시 반환타입과 일치하거나 적어도 자동 형변환이 가능한 것 이어야합니다
- 메서드의 호출
메서드도 클래스의 멤버이므로 클래스 외부에서 메서드를 사용하기 위해서는 먼저 인스턴스를 생성해야합니다.
인스턴스 생성 후 포인트 연산자(.)를 통해 메서드를 호출할 수 있습니다.
반면, 클래스 내부에 있는 메서드끼리는 따로 객체를 생성하지 않고도 서로를 호출할 수 있습니다. - 메서드 오버로딩(Method Overloading)
메서드 오버로딩이란 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것을 의미합니다.
메서드 오버로딩이 성립하는 조건?
- 메서드의 이름이 같아야 한다.
- 매개변수의 개수 또는 타입이 달라야한다.