[JAVA] JAVA와 객체지향 언어의 특징
JAVA의 특징
1. 자유로운 개발환경
- 다른 언어들과 다르게 JAVA는 운영체제와 관련없이 독립적으로 사용할 수 있습니다. 왜냐하면 JVM이라는 가상머신을 통해서 컴파일되고 실행되기때문에 운영체제에 따르지 않고 개발을 하게되는것입니다.
2. 컴파일 언어? 인터프리터 언어?
- 자바는 컴파일 언어이기도 하며, 동시에 JS와 같은 인터프리터 언어이기도합니다.
- 텍스트 소스를 컴파일한 후 자바 런타임(JAVA Runtime)이 클래스를 인터프리트하며 실행되기 때문입니다.
3. 메모리 관리에 대한 자유
- 자바는 가비지 컬렉션을 통하여 메모리를 자동으로 관리해주는 기능을 가지고 있기 때문에, 사용자가 메모리를 관리해주지 않아도 자동으로 관리됩니다. 사실 사용자가 메모리를 직접 관리할 수 있는 방법도 없다고 알고 있습니다.
4. 객체지향 언어이다.
- 자바는 객체지향 언어중 하나입니다. 자세한 내용은 밑에서 설명하겠습니다.
객체 지향 언어의 개념과 특징
객체 지향 언어의 개념
- 보통 책같은 곳을 보면 컴퓨터라는 프로젝트와 CPU,RAM,그래픽카드라는 클래스로 맞대어 설명하곤 합니다. 핵심적으로 파악하면 객체지향이란, 컴퓨터라는 프로그램을 실행하기 위하여 연산,기억,출력등을 역할을 나누어 각각 CPU,RAM,그래픽 카드에 코드를 나눠놨다고 생각하시면 이해가 쉬우실 것 같습니다.
객체 지향 언어의 특징
1. 캡슐화
- 캡슐화란 관련된 기능이나 데이터를 하나로 묶어서 사용하는 방식을 말합니다. 때문에 유지보수에 용이하고, 보안적으로도 안전하다는 특징이 있습니다.
2. 상속
- 상속이란 이미 선언한 클래스를 다른 클래스에 상속함으로서, 다른 클래스의 메서드, 변수등을 사용하고 재정의(Overriding)하여 확장에 용이하게 만드는 기능입니다.
개인적인 견해로는 반복되거나 재선언해야하는 변수를 줄여줌으로서 좀 더 확장에 있어 유리해지고, 코드를 읽을 때의 가독성도 좋아지낟고 생각합니다.
3. 추상화
- 추상화란 클래스의 핵심 목적만을 두고 설계하는 것이라고 생각하고있습니다. 이는 구체적인 것을 제외하고 공통된 목적에 대해서만 로직을 작성하는 것입니다. 대표적으로 추상 클래스나 인터페이스가 이러합니다. 인터페이스는 메소드 리턴타입, 메소드 인자만을 선언할 수 있음으로 구체적인 로직은 구현체에 로직을 구현하게 되어있습니다. 이렇게 핵심 목적만을 작성함으로 개발의 유연성을 챙겼다고 저는 이해했습니다.
4. 다형성
위에 나온 재정의(overriding)과 오버로딩(overloading)에 관한 내용입니다. 상속 받는 클래스나 구현체는 부모클래스나 인터페이스에 있는 메서드에 있는 로직을 그대로 사용함뿐만 아니라 그 로직을 수정할 수 있습니다.
이것을 재정의(OverRiding)이라고합니다. 오버 로딩은 같은 이름의 함수는 인자로 받는 매개변수의 갯수가 다르면 여러번 선언할 수 있는데, 이것을 과적이라는 의미로 오버로딩(overloading)이라고 합니다.