Language

Language/kotlin

다양한 클래스 다루기

Data Class DTO 클래스 데이터(필드) 생성자와 getter equals, hashCode toString data 키워드를 붙여주면 아래 메서드 해결 equals, hashCode toString 여기에 named argument 까지 활용하면 builder pattern을 쓰는 것 같은 효과도 있다. 자바에서도 JDK16부터 record class를 도입하긴 했다. data class Person( private val name: String, private val age: Int ) Enum Class 특징 추가적인 클래스를 상속받을 수 없다. 인터페이스는 구현할 수 있으며, 각 코드가 싱글톤이다. enum class Country( val code: String ) { KOREA("KR"..

Language/Java

열거형(enums)

열거형 정의 enum 열거형이름 { 상수명1, 상수명2, ... } 자바의 열거형 자바의 열거형은 타입에 안전한 열거형(typesafe enum)이라서 실제 값이 같아도 타입이 다르면 컴파일 에러가 발생한다. 열거형 상수를 사용하면 기존의 소스를 다시 컴파일하지 않아도 된다. 열거형 상수의 값이 불연속적인 경우에는 열거형 상수의 이름 옆에 원하는 값을 괄호( )와 함께 적어주면 된다. 그리고 지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 새로 추가해 주어야 한다. 열거형의 인스턴스 변수가 반드시 final이어야 한다는 제약은 없다. 하지만 열거형 상수의 값을 저장하기 위한 것이므로 final을 붙인다. 열거형의 생성자는 제어자가 묵시적으로 private이다. 외부에서 값을 얻을 수 있도록 인스턴스..

Language/kotlin

중첩 클래스 다루기

중첩 클래스의 종류 내부 클래스 외부 클래스를 참조하고 있다. 내부 클래스는 숨겨진 외부 클래스 정보를 가지고있어서 참조를 해지하지 못하는 경우가 발생할 수 있다. 따라서 메모리 누수가 생길 수 있고, 이를 debugging 하기 어렵다. 내부 클래스의 직렬화 형태가 명확하게 정의되지 않아 직렬화에 있어 제한이 있다. public class JavaHouse { private String address; private LivingRoom livingRoom; public JavaHouse(String address) { this.address = address; this.livingRoom = new LivingRoom(10); } public LivingRoom getLivingRoom() { retu..

Language/Java

중첩 클래스

종류 static을 사용하는 중첩 클래스 static을 사용하지 않는 중첩 클래스 내부 클래스 (Inner Class) 지역 클래스 (Local Class) 익명 클래스 (Anonymous Class) static을 사용하는 중첩 클래스 클래스 안에 static을 붙인 클래스로 외부 클래스 직접 참조가 불가하다. static을 사용하지 않는 중첩 클래스 내부 클래스 클래스 안의 클래스로 외부 클래스 직접 참조가 가능하다. 지역 클래스 메서드 내부에 클래스를 정의한다. 익명 클래스 일회성 클래스이다.

Language/kotlin

object 키워드 다루기

static 함수와 변수 static: 클래스가 인스턴화 될 때, 새로운 값이 복제되는게 아니라 정적으로 인스턴스끼리의 값을 공유 companion object: 클래스와 동행하는 유일한 오브젝트 class Person private constructor( private val name: String, private val age: Int ){ companion object{ private val MIN_AGE = 1; // 런타임 시에 변수 할당 private const val MIN_AGE = 1; // 컴파일 시에 변수 할당 fun newBaby(name: String): Person { return Person(name, MIN_AGE) } } } 런타임 시에 변수가 할당됨 컴파일 시에 변수가 할..

Language/kotlin

접근 제어 다루기

자바와 코틀린의 가시성 제어 코틀린에서는 패키지를 namespace를 관리하기 위한 용도로만 사용하고, 가시성 제어에는 사용되지 않는다. 모듈: 한 번에 컴파일되는 코틀린 코드 자바의 기본 접근 제시어는 default이고, 코틀린의 기본 접근 제시어는 public이다. public: 모든 곳에서 접근 가능 protected: 선언된 클래스 또는 하위 클래스에서만 접근 가능 internal: 같은 모듈에서만 접근 가능 private: 선언된 클래스 내에서만 접근 가능 코틀린 파일의 접근 제어 코틀린은 .kt 파일에 변수, 함수, 클래스 여러개를 바로 만들 수 있다. public: 기본값 protected: 파일(최상단)에는 사용 불가능 -> 클래스 접근 internal: 같은 모듈에서만 접근 가능 priv..

Language/kotlin

상속 다루기

추상 클래스 Animal이라는 추상클래스를 구현한 Cat, Penguin 클래스 extends 키워드를 사용하지 않고, : 을 사용한다. 상위 클래스의 생성자를 바로 호출한다. override를 필수적으로 붙여 주어야 한다. abstract class Animal ( protected val species: String, protected val legCount: Int ){ abstract fun move() } class Cat ( species: String ) : Animal(species, 4) { override fun move() { println("고양이가 사뿐 사뿐 걸어가~") } } 추상 프로퍼티가 아니라면 상속할 때 open을 꼭 붙여야 한다. protected open val leg..

Language/kotlin

클래스 다루기

클래스와 프로퍼티 class KotlinPerson constructor(name: String, age: Int){ val name = name val age = age } 코틀린에서는 필드만 만들면 getter와 setter를 자동으로 만들어준다. property = field + getter + setter constructor는 생략할 수 있다. class KotlinPerson( name: String, age: Int ){ val name = name val age = age } 클래스의 필드 선언과 생성자를 동시에 선언할 수 있다. 생성자: constructor(name: String, age: Int) 필드 val name = name val age = age .필드 를 통해서 getter..

Language/kotlin

함수 다루기

함수 선언 문법 함수 구조 [접근 지시어] [함수를 의미하는 키워드] [함수 이름] [함수의 매개변수] [함수의 반환 타입] 접근 지시어: public은 생략 가능 함수를 의미하는 키워드: fun 함수의 매개변수: [매개변수명: 타입] 함수가 하나의 결과값이면 block 대신 = 사용이 가능하다. 이를 한줄로 변경이 가능하다. = 을 사용하는 경우에는 반환 타입 생략이 가능하다. block { } 을 사용하는 경우에는 반환 타입이 Unit이 아니면, 명시적으로 작성해줘야 한다. // 1. 함수 선언 문법 - 두 정수를 받아서 더 큰 정수를 반환 fun max(a: Int, b: Int) = if (a > b) a else b 함수의 위치 클래스 안 파일 최상단 한 파일 안에 여러 함수들이 있을 수 있음 ..

Language/kotlin

예외 다루기

try catch finally 구문 // 1. try catch finally 구문 - 주어진 문자열을 정수로 변경 fun parseIntOrThrow(str: String): Int{ try { return str.toInt() } catch (e: NumberFormatException) { throw IllegalArgumentException("주어진 ${str}는 숫자가 아닙니다.") } } 자바에 비해서 코틀린에서는 기본타입간의 형변환은 .toType()을 사용한다. 타입이 뒤에 위치한다. new를 사용하지 않는다. 포맷팅이 간결하다. 코틀린에서는 try catch 구문 역시 expression이다. // 주어진 문자열을 정수로 변경 - 실패하면 null 반환 fun parseIntOrNul..

kimjingyu
'Language' 카테고리의 글 목록 (7 Page)