개인적으로 연습하기 위해 간단하게 단답형으로 암기하면서 작성했음을 미리 알립니다. 면접을 보면서 점차 보완할 예정입니다.
객체지향프로그래밍(OOP)을 지원하며
OOP의 특성으로는 다형성,추상화,캡슐화(은닉),상속이 대표적입니다.
(다형성은 한 객체가 여러 타입을 가질 수 있는 것)
가비지 컬렉터를 이용해서 자동으로 메모리를 관리합니다.
운영체제에 독립적입니다.
멀티스레드를 지원합니다.(이는 싱글스레드인 자바스크립트와 반대)
프로세스는 운영체제에서 시스템 자원을 할당받는 작업 단위를 의미하고
스레드는 프로세스 내에서 실행되는 흐름 단위를 말합니다.
-> 프로세스, 스레드 질문은 운영체제에서 다시 한 번 정리해야겠다!
클래스는 객체를 설계하는데 필요한 설계도,틀을 말하고
객체는 구현할 대상을 의미합니다. 클래스의 인스턴스입니다.
인스턴스는 클래스를 바탕으로 구현된 실체를 의미합니다.
인터페이스는 객체를 어떻게 구성할지에 대한 설계도를 말하고 추상클래스는 상속을 위한 클래스로서 인터페이스보다 추상적입니다.
오버라이딩은 상속에서 사용되는 개념으로서 부모 메소드를 자식 메소드에서 재정의하는 것을 의미합니다. 오버로딩은 같은 이름의 메소드를 여러개 정의하는 것을 말합니다. 이때 매개변수의 타입이나 개수가 달라야 합니다.
변수와 메소드,클래스 등에서 사용할 수 있는 키워드입니다.
변수에서 final을 사용하면 변경이 불가능한 상수가 됩니다. 메소드에서 사용하게 되면 상속받은 클래스에서 이 메소드를 오버라이딩할 수 없습니다.
클래스에서 사용하면 상속 자체가 불가능합니다.
에러는 시스템적으로 발생하는 치명적인 오류로서 메모리 용량 초과, 스택오버플로우 등이 있습니다. 반면 예외는 개발자가 처리 가능한 수준의 오류입니다. 자바에서는 try-catch 중 catch 구문에서 예외처리가 가능합니다.