🔸 객체란
우리가 실제 생활에서 사용하는 모든 사물을 뜻하며, 클래스에 정의된 것을 바탕으로 메모리에 할당된 것을 말한다.
🔸 객체지향프로그램이란
프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
🔸 상속(inheritance)
기존 클래스를 재사용하여 새로운 클래스를 작성하는 것. (다른 클래스의 특징(데이터, 메소드)를 물려받는 것.)
코드의 재사용성을 높이고 중복을 제거 ➡️ 생산성과 유지보수에 도움
🔸 캡슐화(encapsulation)
data hiding
데이터가 유효한 값을 유지하거나 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하게 접근을 막는 것
실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 은닉할 수 있다.
데이터를 보이지 않고 외부와 상호작용을 할 때는 메소드를 이용하여 통신을 한다.
🔸 추상화(abstraction)
객체들의 공통적인 특징(기능, 속성)을 도출하는 것
객체지향적 관점에서는 클래스를 정의하는 것을 추상화라고 할 수 있다.
🔸 다형성(polymophism)
한 타입의 참조변수로 여러타입의 객체를 참조할 수 있도록 하는 것
➡️ 하나의 변수, 또는 함수가 상황에 따라 다른 의미로 해석될 수 있는 것을 말한다.
오버라이딩(Overriding), 오버로딩(Overloading)
🔸 재사용성
기존의 코드를 이용하여 새로운 코드를 작성할 수 있다.
🔸 유지보수성
코드 간 관계를 이용하여 보다 적은 노력으로 코드를 변경할 수 있다.
🔸 높은 신뢰성
코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 막을 수 있고, 제어자와 메서드를 통해 데이터를 보호,
알맞은 값을 유지하도록 할 수 있다.