객체 (ex.자동차)
클래스 (ex. Class Car)
현실 세계의 객체를 프로그램에서 이용할 수 있는 객체로 만들어 주는 것
현실 세계의 객체를 컴퓨터 메모리에 생성할 수 있는 템플릿
인스턴스 (ex. Yellow Car, Blue Car)
객체, 클래스, 인스턴스의 관계
상속
정의 = 상속이란 부모 클래스가 가지고있는 모든것을(생성자 제외) 자식클래스가 물려받아 같이 공유하며 나아가 확장(extends)하는 개념이다. 부모 클래스를 상위 클래스(superclass)로 부르며 상속받는 자식 클래스를 하위클래스(subclass)라고 부른다.
출처 = https://slowlywalk1993.tistory.com/entry/Java-%EC%83%81%EC%86%8DInheritance%EC%9D%B4%EB%9E%80
왜 필요한가?
클래스끼리 서로 공통된 내용이 대다수 일때 코드를 재작성하는 것이 아니라 상위 클래스한테서 상속을 받아 진행한다.
상속은 코드를 간결하게 하여 코드의 재사용성을 높이는 객체지향의 핵심 개념!
상속의 논리적 관계
부모 클래스와 자식 클래스의 관계가 일반화, 특별화 관계에 있어야 함.
논리적으로 판단되어야함
다형성
하나의 인터페이스를 이용해 서로 다른 구현을 제공함
ex) 리모콘으로 다른 종류의 티비에 같은 방법으로 명령을 내리는 것
다형성은 메서드 오버로딩과 오버라이딩을 통해 지원됨
메서드 오버로딩 = 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하면서, 그 인자의 개수나 유형을 다르게 해 놓은 형태
메서드 오버라이딩 = 상속 관계에 있는 하위 클래스가 상위 클래스가 가지고 있는 메서드를 재정의하는 것
추상화
구체적인 사실들을 일반화시켜 기술하는 것
현실 세계에 존재하는 다양한 객체들의 공통된 특성을 모아 일반화해 놓는 것
캡슐화
변수와 메서드를 하나의 추상화된 클래스로 묶는 과정을 의미함
변수와 메서드를 하나로 묶어 독립적으로 동작하지 않도록 함
정보 은닉
메세지
객체 간에 서로 통신하는 방법
객체 간에 메세지를 주고받기 때문에 여러 객체는 동일한 프로세스를 가질 필요 없음
서로 메세지를 주고받는 데 객체가 존재하는 위치는 제약이 되지 않음
출처: SWEA사이트