같은 객체지향언어이고 문법도 비슷하지만, 언어를 깊게 이해하기 위해서는 두 언어의 차이점을 알아야 한다.
우선 C++이 자바보다 먼저 나왔고, 자바는 C++의 뒤를 잇는 완전한 객체지향을 지향하는 언어이다.
즉, C++은 자바만큼 객체지향을 완벽하게 지원하지는 않는다고 생각할 수 있다.
객체의 생성자를 정의할 때 C++은 initialization list와 몸통부 사용할 수 있지만 자바에서는 initialization list를 지원하지 않는다.
원래 C++은 initialization list를 사용해 변수를 초기화하고 생성자의 몸통부를 통해 별도의 작업을 수행하라는 의도로 이렇게 설계됐지만, 자바를 설계할 때는 두 가지 작업을 한 번에 처리하는게 합리적이라고 판단해 initialization list를 지원하지 않는다.
이 외에도 C++에는 default 접근 제한자가 없고, public private 등 여러 접근제어자의 의미도 자바와는 조금 다르다.
언어가 나온 순서를 고려해 "이 언어는 이전 언어의 어떤 점을 어떻게 보완했을까?" 를 생각하며 공부하자.