Java

2.3.2 자바에서 사용하지 않는 구조체

by IT장인 posted Nov 22, 2013
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
book_7247.png


2.3.2 자바에서 사용하지 않는 구조체

C 언어에는 구조체가 있고, C++와 자바에는 클래스가 있다. 자바는 C++의 문법 구조를 따르고 있으며, C++는 C 언어를 기반으로 하고 있다. C 언어의 구조체는 C++에 와서 완전하게 다른 모습인 클래스라는 이름으로 발전해서, 원래의 구조체와 클래스가 공존하게 된다. 그리고 이 클래스를 사용자가 쓰기 편리하도록 깔끔하게 완성시킨 듯한 느낌이다.

□ 구조체
◇ C 언어의 사용자 정의 데이터 타입

□ 클래스
◇ C++와 자바에서의 사용자 정의 데이터 타입

하지만 자바에서는 과감하게 구조체를 없애 버린다. 그 이유는 구조체의 기능을 클래스가 전부 할 수 있기 때문이다. 여기서 주장하고자 하는 것은 구조체에서 발전된 개념이 클래스라는 것이다.

□ 자바에서 구조체
◇ 자바에는 구조체가 없다.
◇ 구조체에서 발전된 개념이 클래스이다.

표준으로 C와 C++ 언어가 존재하고, C와 C++를 확장시켜서 각각의 회사들은 자신들의 컴파일러를 만들고 자신들의 문법을 추가하게 된다. 각 회사에서 다른 버전의 언어를 만들더라도 C와 C++의 기본적인 문법의 틀은 벗어나지 않는다.

개인적으로 바라보는 자바 문법은 C++의 문법에서 불필요하고 난해한 요소들을 제거하고, 객체지향을 위한 디자인 중심의 언어로 다시 만든 듯한 느낌이다. 그렇다고 해서 C++의 꼭 필요한 기능을 없앤 것은 아니다. 있을 건 다 있다. 그리고 구조체가 없어도 클래스로 대체할 수 있기 때문에 자바에서는 과감하게 없애버린 것이다.

□ 결론
◇ 클래스는 구조체의 개념을 포함한다.

클래스는 비단 자바 언어뿐만 아니라 C++, C#, Visual C++에서 통용되는 개념이다. 그렇기 때문에 자바의 클래스 개념을 제대로 이해한다면, 다른 C++ 계열의 언어를 쉽게 터득할 수 있을 것이다. 클래스는 C++ 계열의 언어를 공부한다면 누구나 기억해야 하는 객체지향 언어의 기본에 해당한다.

☞ 참고
C++에서 구조체와 클래스를 동시에 사용하는 이유는 C 언어와의 호환성을 유지하기 위해서이다. 자바의 경우 처음부터 C++을 기반으로 만들어진 언어이기 때문에 아예 처음부터 구조체를 제외시켜 버린 것이다.