Java의 특징
- 기본 자료형을 제외한 모든 요소들이 객체로 표현된다.
- 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어이다.
- Garbage Collector를 통한 자동적인 메모리 관리
- 멀티쓰레드(Multi-thread)를 지원
- 다양한 Open 라이브러리 존재
- OOP(객체지향언어): 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해 전체 프로그램을 개발하는 기법
캡슐화..?
클래스의 내부 변수와 메소드를 하나로 패키징하는 것
객체에 선언된 변수나 메소드가 구분없이 접근할 수 있으면 정상적인 객체라고 보기 어렵다.
비슷한 개념의 은닉화
정보 은닉은 객체의 내부 구현을 숨김으로써 객체가 반드시 정해진 메소드를 통해 상호작용하도록 유도한다.
캡슐화의 장점
객체의 응집도와 독립성을 높임으로써 객체의 모듈화를 지향한다.
모듈화를 지향하기 때문에 모듈단위 재사용이 용이하고 간편한 유지보수와 연관이 있다고 볼 수 있다.
캡슐화 은닉화 구현
-접근 제어자 이용
public
protected
default
private
상속..?
상위클래스(부모 클래스)를 받는 하위클래스(자식클래스)
자식 클래스가 부모 클래스로부터 상속을 받게 되면 부모 클래스의 필드와 메서드를 물려받게 된다.
단, 접근제어자가 private을 갖는 필드나 메소드는 상속이 불가하고, 패키지가 다를 경우 접근제어자가 default인 경우도 상속이 불가하다.
상속의 방법
extends
class 자식 클래스명 extends 부모 클래스명 {
....}
주의점
자식 클래스가 여러 부모에게 다중 상속을 받을 수 없다. 하지만 부모는 여러개의 자식클래스에게 상속이 가능하다.
요약
1. 상속 방법 : class 클래스(자식) extends 클래스(부모)
2. 자식 클래스는 부모 클래스로부터 메소드와 필드를 물려받아 사용한다. 부모 클래스는 자식 클래스에서 정의한 메소드나 필드를 사용하지 못한다.(자식 = 자신 + 부모 / 부모 = 자신)
3. 자식 클래스는 여러 부모 클래스로부터 상속받지 못한다. 즉, 단일상속만 가능하다.
4. 부모 클래스는 여러 자식 클래스에게 상속이 가능하다.
5. 자식 클래스가 더 다양한 기능이 가능하므로 자식 클래스로 인스턴스를 생성하는 것이 효율적이다.
다형성
하나의 객체가 여러 가지 타입을 가질 수 있는 것
상속을 통해 기능을 확장, 변경하는 것을 가능하게 해주고 같은 클래스 내에 코드의 길이를 줄여주는 것까지 해준다.
다형성으로 인해 객체지향언어의 특징을 가진다고 볼 수 있다.