C++ | JAVA | |
설계 목표 | 속도, C와의 하위 호환성에 집중 | 보안과 빠른 이식성에 집중 |
클래스 | C언어의 상위 호환으로 절차지향이 섞임 | 기본단위 Class, 거의 완전한 OOP |
컴파일과 런타임 | 각 운영체제에 맞는 기계어로 컴파일 | 가상머신 바이트 코드로 컴파일 하며, 이를 실행 시키기 위해서는 가상머신이 필요 |
이식성, 보안성 | 상대적으로 낮음 | 상대적으로 높음 |
바인딩 | 정적 바인딩 ( 컴파일 시, 어떤 함수를 호출할 지 결정) - 프로그램 실행 중에는 불필요한 오버헤드 없음 - virtual 키워드 제공 |
동적 바인딩 ( 런타임 중, 실행코드가 결정 ) - 실행 시간에 그 인스턴스가 실제로 담고 있는 객체의 종류를 판단하여 메서드 호출 - 별도의 데이터 관리해야 하고 부가적인 오버헤드 붙음 |
문법 차이 | - 동적으로 할당한 메모리 직접 해제 - 연산자 오버로딩, 다중상속 사용 |
- Carbage Collector 이 메모리를 자동으로 해제 - 연산자 오버로딩, 다중상속 사용 불가능 대신에 interface를 사용해 다중상속 같은 유사 기능 제공 |
인자 전달 방법의 차이 | 오로지 Call by Value만 가능 | |
가상메서드 | 가상메서드를 별도로 선언해줘야 함 | 모든 메서드가 가상 메서드 즉, 레퍼런스 유형이 아닌 객체 유형에 따라 메소드 구현이 결정 |
'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글
Parameter VS Argument (0) | 2021.05.28 |
---|---|
Primitive type vs Reference type (0) | 2021.05.26 |
C vs JAVA (0) | 2021.05.21 |
JAVA의 장단점 (0) | 2021.05.21 |
클래스/인스턴스란? (0) | 2021.05.21 |