https://s-bug.tistory.com/57
자바의 특징
- 객체 지향적인 언어
- 컴파일 + 인터프리터 언어
- text source를 compile하여 class 파일 생성
- class 파일을 런타임때 interpret 하면서 실행됨
- JVM위에서 실행되기 때문에 운영체제에 독립적이다. -> 독립적인 플랫폼
- GC에 의한 메모리 관리
- 개발자가 직접 메모리에 접근할 수 없고, 자바가 직접 메모리를 관리해준다
- 멀티 쓰레딩 지원
- 운영체제마다 멀티스레드를 이용하는 api가 다르지만 -> jvm 위에서 실행되는 자바 프로그램은 자바 api를 통해 쉽게 멀티 스레드 환경을 구현할 수 있다
객체 지향 4개 특징
- 캡슐화
- 관련된 기능 및 데이터를 하나의 클래스에 담아 정보를 은닉할 수 있다
- 접근제한자: public, protected, default, private
- 상속
- 부모 클래스에서 선언한 변수, 메소드를 자식 클래스에서 재사용하는 기능
- extends 키워드를 활용
- 자바의 모든 class는 Object 클래스의 자식 클래스이다.
- 부모의 private 멤버는 상속받을 수 있지만, 직접 접근할 수 없다
- 추상화
- 객체에서 공통 속성과 행위를 추출하는 것
- 다형성
- 오버라이딩 @Override
- 메소드를 재정의하는 것. public 메소드만 오버라이딩할 수 있음
- 오버로딩
- 같음 이름의 메소드를 여러 개 정의하는 것. 오버로딩 관계의 메소드끼리는 파라미터 개수와 타입이 달라야 함.