목표 Java와 Kotlin의 최상위 선언의 차이에 대해 이해한다. 최상위 선언 최상위 선언이란 파일 최상위에 선언되는 클래스, 메서드, 변수를 뜻한다. Java의 최상위 선언 Java에서는 모든 코드가 클래스 기반으로 작성된다. 이 때문에 자바의 모든 파일은 클래스에 연결되어 있는데, 이로 인해 아래와 같이 최상위 선언에는 클래스만이 들어올 수 있는 구조가 만들어진다. package apackage; public class GalaxyTab { .. } 따라서 자바에서의 최상위 선언에는 class만이 들어갈 수 있으며, 파일명과 같은 클래스만이 정의가 가능하다. 메서드를 정의하기 위해서는 class 내부에 정의를 해야 한다. 이러한 구조에서는 메서드를 정의하기 위해 클래스를 만들고 내부에 메서드를 만들..
분류 전체보기
목적 Kotlin의 상속 변경자가 어떻게 설계되었는지 이유와 의미를 이해한다. 개요 Java에서는 class는 기본적으로 상속이 가능했다. 상속을 불가능하게 만들기 위해서는 final 변경자를 붙여야 했다. 객체 지향적인 관점에서는 객체가 있고 해당 객체에 대한 코드를 줄이기 위해 재사용 가능하다면 재사용 하는 것이 좋지만, 이러한 사용 방식은 상속하는 기반 클래스가 변경이 없는 경우에만 유효하다. 기반 클래스가 변경이 잦은데 무분별하게 클래스를 상속하게 된다면, 취약한 기반 클래스(fragile base class) 문제에 직면하게 된다. 기반 클래스가 변경될 때마다 기반 클래스를 상속하는 모든 자식 클래스들은 변경되어야 하며, 어느 부분에 문제가 생길지 모른다. 이러한 문제를 해결하기 위해 코틀린에서..
목적 Data Class를 이해한다. 개요 Kotlin에서는 모든 클래스는 Any 클래스를 상속 받는다. Any 클래스에는 equals, hashCode, toString 가 정의되어 있고, 따라서 Kotlin의 클래스는 위 메서드들을 재정의하여 사용해야 한다. 만약 이 메서드들이 어떤 역할을 하는지 모른다면 먼저 아래 글을 보고 오도록 하자. Class에 정의되어야 하는 equals, hashCode, toString 살펴보기 목적 equals, hashCode, toString 에 대해 안다. 클래스에 정의되어야 하는 메서드 Java에서 클래스는 Object Class를 상속 받고, Object Class에 정의된 toString(), hashCode(), equals(other: Object) 메서..
목적 equals, hashCode, toString 에 대해 안다. 클래스에 정의되어야 하는 메서드 Java에서 클래스는 Object Class를 상속 받고, Object Class에 정의된 toString(), hashCode(), equals(other: Object) 메서드를 재정의 할 수 있다. Kotlin에서도 Java와 마찬가지로 Any Class를 상속받으며 Any Class에 정의된 toString(), hashCode, equals를 재정의 할 수 있다. package kotlin public open class Any { public open operator fun equals(other: Any?): Boolean public open fun hashCode(): Int public..
목표 Java의 타입 시스템에 대해 이해한다. Kotlin의 타입 시스템에 대해 이해한다. Java의 타입 시스템 Java에서는 데이터의 타입이 원시 타입과 Object Class를 상속하는 타입 두가지로 나뉜다. 원시 타입(Primitive Type) 값 그 자체가 Stack 메모리에 저장되어 접근속도가 빠르다. null을 담을 수 없다. Object Class를 상속하는 타입 Stack에는 참조값을 저장하고 실제 데이터는 Heap 메모리에 저장된다. Primitive type은 Object Class를 상속하지 않으며, 별도 타입으로 분류된다. 물론 Primitive Type의 박싱된 타입인 Boolean, Integer 등은 Object Class를 상속받는다. Primitive type 외의 모든..