한국의 큰 회사들은 JVM 계열이 아는 곳이 없다고 생각한다. 그리고 배울 자료도 많은 것 역시 인정한다. 그렇기 떄문에 내가 설마 회사에서 사용하지 않더라도 배우고 싶다는 생각이 들었다. 또한 나의 커리어 자리를 늘리는데 좋은 도구가 될거라고 생각했다. 요즘은 코틀린으로 틀어가고 있는 대세이지만 그래도 Spring과 Java를 이용해서 서버단의 프로그램을 많이 만드는 편이다. 솔직히 배울 수 있는 자료가 많고 확실히 튼튼한 기술 스택임은 부정할 수 없다.
Kotlin은 요즘 성장 추세이다. IP(지식재산권) 문제가 많은 자바는 역시 처음에는 확실한 기업에서 운영했기에 좋을 수 있으나.
언어
Java
Kotlin
Spring
자주 나오는 이야기들
클래스와 객체의 차이점
- 클래스
- 객체를 정의해 놓은 것
- 객체의 설계도, 틀
- 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다.
- 연관되어 있는 변수와 메서드의 집합
- 객체
- 클래스에 선언된 모양 그대로 생성된 객체
- 클래스에 정의된 내용대로 메모리(Heap)에 생성된 것(new 사용)
- OOP 관점에서 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부름
오버로딩, 오버라이딩
- 오버로딩
- 한 클래스 내, 같은 이름의 메소드를 정의하는 것을 말함
- 두 메서드가 같은 이름을 가지고 있으나, 파라미터 수나 자료형이 다른 경우
- 오버라이딩
- 부모 클래스의 메소드의 동작 방식을 변경(재정의)하여 우선적으로 이용하는 것 (다형성)
- 상위 클래스에 존재하는 메서드를 하위 클래스에 맞게 재정의하는 것 (메서드 이름 및 파라미터 수 동일)
추상클래스(abstract) 인터페이스(interface) 차이
-
추상클래스
- 클래스 구현부 내부에 추상 메서드가 하나 이상 포함도거나 abstract로 정의된 경우
- 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는 것이 목적
- 단일 상속
-
인터페이스
- 모든 메서드가 추상 메서드인 경우 (추상클래스보다 한 단계 더 추상화 된 클래스)
- 인터페이스의 모든 메서스들은 추상메서드로 간주되기 때문에 abstract를 적지 않는다.
- public static final 생략
- 구현 객체의 같은 동작 방식 보장
- 인터페이스의 변수는 스스로 초기화 불가능
- 아무 인스턴스도 존재하지 않는 시점
- 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할
- 함수의 껍데기만 존재하는데, 해당 함수의 구현을 강제하는 것이 목적
- 다중 상속
extend, implements