1. 코드의 재사용성이 높음
: 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성 가능
2. 코드의 관리가 용이(유지보수 용이)
: 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경 가능
3. 신뢰성이 높은 프로그래밍 가능(중복 코드 제거)
: 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지
🍕 클래스
클래스의 정의
: 객체를 정의해놓은 것, 객체의 설계도 또는 틀클래스의 용도
: 객체를 생성하는데 사용🍟객체
객체의 정의
: 실제로 존재하는 사물(유형) 또는 개념(무형), 클래스에 정의된 내용대로 메모리에 생성된 것객체의 용도
: 객체가 가지고 있는 기능과 속성에 따라 다름→클래스는 단지 객체를 생성하는데 사용될 뿐, 객체 그 자체는 아님
→원하는 기능의 객체를 사용하기 위해서 먼저 클래스로부터 객체를 생성하는 과정이 선행되어야 함
→객체를 사용한다는 것은 객체가 가지고 있는 속성과 기능을 사용한다는 뜻
→클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 설계도를 잘 만들어 놓으면 제품을 만드는 일이 쉬워지기 때문
: TV를 보기 위해서, TV(객체)가 필요한 것이지 TV설계도(클래스)가 필요한 것이 아니며, TV설계도(클래스)는 단지 TV(객체)를 만드는 데만 사용될 뿐
객체는 속성
과 기능
의 구성요소로 이루어짐
일반적으로 객체는 다수의 속성과 다수의 기능을 가짐. 즉, 객체는 속성과 기능의 집합
객체가 가지고 있는 속성과 기능을 그 객체의 멤버(구성원, member)
라고 함
클래스는 객체를 정의한 것이므로, 클래스에는 객체의 모든 속성과 기능이 정의되어 있음
클래스로부터 객체를 생성하면, 클래스에 정의된 속성과 기능을 가진 객체가 만들어지는 것
ex) TV
속성 : 크기, 길이, 높이, 색상, 볼륨, 채널 등
기능 : 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경하기 등
💡 객체지향 프로그래밍에서는 속성과 기능을 각각 변수와 메서드로 표현
속성(변수) : 색상, 전원, 채널, 볼륨, 크기, 길이 등
기능(메서드) : 켜기, 끄기, 볼륨 낮추기 높이기, 채널 변경하기 등
class Tv {
String color; //색깔
boolean power; //전원상태
int channerl; //채널
void power() { power = !power; }
void channelUp() { channel++; }
void channelDown() { channel; }
}
클래스의 인스턴스화(instantiate)
라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)
라고 함▶ 인스턴스는 객체와 같은 의미지만 객체는 모든 인스턴스를 대표하는 포괄적인 의미(객체와 인스턴스를 엄격히 구분할 필요는 없음)
▶ 인스턴스는 어떤 클래스로부터 만들어진 것인지를 보다 강조하는 의미를 가짐
🚩 책상은 인스턴스다. 책상은 객체다 → 책상은 책상 클래스의 인스턴스다