이것이 자바다를 처음부터 다시 회독하며 정리하는 글이다.
앞부분의 기본적인 부분은 생략하고 클래스 단원부터 정리할 계획이다
객체지향 프로그램의 특징으로는 캡슐화, 상속, 다형성 등이 있다.
캡슐화
란 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것이다. 외부 객체는 객체 내부의 구조를 알 수 없으며 객체가 노출하여 제공하는 필드와 메소드만 사용 가능하다.
이렇게 캡슐화를 하는 이유는 중요 부품이 고장나거나 무분별한 사용으로 객체가 손상되는걸 방지하기 위함이다.
그래서 자바에서 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해서 나오는 것이 접근 제한자
이다. 접근 제한자는 객체의 필드와 메소드의 사용범위를 제한하여 외부로부터 보호한다.
접근제어자에는 public, private, protected, default가 있다.
public - 변수와 메소드 어느 패키지, 어느 클래스에서든 접근이 가능
private - 변수와 메소드는 해당 클래스 내에서만 접근이 가능하다.
protected - 변수, 메소드는 동일 패키지내의 클래스 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능하다.
default - 접근제어자를 별도로 지정하지 않았을 때 설정됨, 변수와 메소드는 해당 패키지 내에서만 접근이 가능하다.
자바에서 부모 역할인 상위 클래스, 자식 역할인 하위 클래스가 존재할 수 있다.
상위 객체는 자신이 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해준다. 하지만 하위 클래스는 여러개의 상위 클래스를 가질 수는 없다.
다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 특징을 말한다.
다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다. 다형성을 위해 부모 클래스 또는 인터페이스의 타입 변환을 허용한다.
자동차를 예로 든다면 타이어에는 금호, 미쉐린, 한국 타이어 등등이 있는데 타이어 인터페이스를 적용했다고 하면 인터페이스를 구현한 타이어라는 클래스에서는 어떤 타이어든 상관없이 자동차에 장착을 시킬 수가 있다.