1. 객체
객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른것과 식별 가능한 것을 말합니다. 현실에서 부품을 먼저 만들고 조립하여 완성 제품을 만들듯이 객체들을 먼저 만들고, 객체를 하나씩 조립해서 완성된 프로그램을 만드는 것을 객체지향 프로그램(OOP:Object Oriented Programming)이라고 합니다.
2. OOP(OOP:Object Oriented Programming)의 특징
OOP의 특징은 캡슐화, 상속, 다형성이 있습니다.
1) 캡슐화
객체의 필드, 메소드를 하나로 묶고, 실제 구현한 내용을 감추는 것을 말합니다. 외부 객체는 객체의 내부구조를 알지 못하며 객체가 노출하여 제공하는 필드와 메서드만 이용 가능합니다.
필드와 메서드에 캡슐화를 사용하는 이유는 외부의 잘못된 사용으로 객체가 손상되지 않기 위해서입니다. 예를 들어 중요한 필드나 메서드가 사용자의 실수로 잘못된다며 에러를 발생시킬 수도 있습니다.
캡슐화는 접근 제한자를 통해서 이루어집니다. 접근 제한자는 객체의 필드와 메서드의 사용 범위를 제한함으로 외부 사용자로부터 보호를 합니다.
2) 상속
상속이란 부모가 가지고 있는 재산을 자식에게 물려주는 것을 말합니다. 자바에서는 상위 객체(부모역할)가 가지고 있는 필드와 메서드를 하위 객체(자식 역할)에게 물려주어 하위 객체가 부모 객체의 필드와 메서드를 사용할 수 있게 합니다.
상속의 장점은 상위 객체를 재사용할 수 있도록 하여 객체를 쉽고 빠르게 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용하므로 중복 코드도 줄여 줍니다.
예를 들어 객체 B, C(자식 역할)가 객체 A를 상속할 경우에 A의 필드(부모역할)와 메서드를 수정함으로써 객체 B, C는 따로 수정하지 않아도 객체 A의 수정된 필드와 메소드를 사용할 수 있습니다.
3) 다형성
같은 타입이지만 실행결과가 다른 것을 말합니다. 즉, 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 사용할 수 있게 해 줍니다. 다형성은 상속 또는 인터페이스를 통해서 이루어집니다.
상속의 부모 타입에 모든 자식 객체가 대입될 수 있고 인터페이스의 타입에는 모든 구현 객체가 대입될 수 있습니다. 다형성은 객체를 부품화가 가능합니다. 예를 들어 자동차를 설계 시, 타이어 인터페이스를 적용했다면 인터페이스를 구현한 실제 타이어가 어떤 것이든 상관없이 장착(대입)이 가능합니다.
2. 클래스
무엇인가를 만들기 위해서는 설계도가 필요합니다. 자바에서는 메모리에서 사용하고 싶은 객체가 있다면 설계도를 바탕으로 객체를 만드는 작업이 필요한데 바로 객체의 설계도가 클래스(class)입니다.
OOP는 클래스를 기반으로 프로그래밍하는데 클래스는 객체를 생성하기 위한 필드와 메서드가 정의 있습니다. 즉, 객체의 속성과 기능을 코드로 구현한 것입니다.
그리고 객체를 클래스로 구현하는 것을 클래스를 정의한다고 합니다. 클래스명은 소문자가 아닌 대문자로 시작하는 규칙이 있습니다.
클래스로부터 만들어진 객체를 해당클래스의 인스턴스(객체)라고 합니다. 이렇게 클래스로 부터 객체를 만든 과정을 인스턴화라고 합니다.
Food pizza = new Food(); //Food 클래스를 인스턴스화 합니다. (new 연산자를 이용합니다)
구체적으로 클래스가 객체화되어, 컴퓨터의 메모리상에 존재하게 되면 이를 인스턴스(객체)라고 합니다. 인스턴스화를 통해 변수가 객체를 참조하여 객체를 사용할 수 있습니다.
- 클래스의 구성
클래스는 필드, 생성자, 메서드로 구성되어 있습니다.
public class JavaClass {
//필드(멤버변수) : 객체의 데이터 저장되는 곳 입니다.
String Field;
//생성자 : 객체의 초기화를 담당합니다.
JavaClass(){
}
//메서드 : 클래스의 기능을 구현합니다.
void JavaMethod(){
System.out.println("Java Method");
}
}
(1) 필드(멤버 변수)
클래스의 속성을 구성합니다. 속성에 따라 알맞은 자료형(String, int...)을 선언해 주어야 합니다.
(2) 생성자
new 연산자로 호출되는 특별한 중괄호 {} 블록입니다. 생성자는 객체 생성 시, 초기화를 담당합니다. 생성자는 메서드와 비슷하지만 클래스의 이름으로 되어 있으며 return 타입이 없습니다.
(3) 메서드
객체의 기능을 구현합니다. 메서드를 호출하면 메서드 안에 있는 코드를 실행시킵니다. 실행 후 값을 return 할 수 있습니다.
- 기술면접을 위해서 꼭 알아두시는게 좋습니다.
'JAVA' 카테고리의 다른 글
[ 개념 ] JAVA 생성자(constructor)란? this (0) | 2020.07.18 |
---|
댓글