본문 바로가기

Kotlin11

Kotlin #11 : 제네릭, 배열 230223 제네릭(generic) - 자료형의 객체들을 다루는 메서드나 클래스에서 컴파일 시간에 자료형을 검사해 적당한 자료형을 선택할 수 있도록 하기 위해 사용 - 앵글 브래킷() 사이에 형식 매개변수를 사용해 선언 - 형식 매개변수는 자료형을 대표하는 용어로 T와 같이 특정 영문의 대문자로 사용 형식 매개변수의 이름 - 강제사항은 없으나 일종의 규칙 E : 요소(element) K : 키(key) N : 숫자(number) T : 형식(type) V : 값(value) S, U, V etc. : 두번째, 세번째, 네 번째 형식(2nd, 3rd, 4th types) - 자료형이 추론 가능한 경우, 앵글 브라켓을 생략할 수 있다. val box3 = Box(1) // 1은 Int형이므로 Box로 유추함 val bo.. 2023. 2. 24.
Kotlin #10 : 내부 클래스, 연산자 230223 코틀린 내부 클래스 중첩(Nested)클래스 이너(Inner)클래스 종류 역할 정적 클래스 (static class) static 키워드를 가지며 외부 클래스를 인스턴스화 하지않고 바로 사용 가능한 클래스 (주로 빌더 클래스에 이용) 중첩 클래스(nested class): 객체 생성 없이 사용 가능 멤버 클래스 (member class) 인스턴스 클래스로도 불리며 외부 클래스의 필드나 메서드와 연동하는 내부 클래스 이너 클래스(inner class): 필드나 메서드와 연동하는 내부 클래스로 inner 키워드가 필요 지역 클래스 (local class) 초기화 블록이나 메서드 내의 블록에서만 유효한 클래스 지역 클래스(local class): 클래스의 선언이 블록에 있다면 지역 클래스 익명 클래스 (ano.. 2023. 2. 23.
Kotlin #9 : 객체, 데이터 클래스, Companion 객체, object, singleton, 추상 클래스, 인터페이스 230222 자바에서 코틀린 Companion 객체 사용 @JvmStatic - 자바에서는 코틀린의 컴패니언 객체를 접근하기 위해 @JvmStatic 애노테이션(annotation) 표기법을 사용 1. package com.example.pp192 class KCustomer { companion object { const val LEVEL = "INTERMEDIATE" @JvmStatic fun login() = println("Login...") // 어노테이션 표기 사용 fun hahee() = println("hahee..") } } 2. package com.example.pp192; public class KCustomerAccess { public static void main(String[] args).. 2023. 2. 23.
Kotlin #8 : 코틀린의 프로퍼티, 자바의 필드, 지연 초기화, lazy, 위임 230220 ++ 코틀린의 프로퍼티(Properties) ++ - 변수 선언과 기본적인 접근 메서드를 모두 가지고 있음 - 내부적으로 생성 (따로 접근 메서드를 만들지 않아도 됨) ** 자바의 필드 : 단순한 변수 선언만 가지기 때문에 접근을 위한 메서드를 따로 만들어야 한다. ++ 게터(Getter)와 세터(Setter) ++ - 게터와 세터를 합쳐 접근 메서드(Access methods)라고 함 - 자바에서는 모든 필드에 대한 접근 메서드를 만들어야 함 value: 세터의 매개변수로 외부로부터 값을 가져옴 - 외부의 값을 받을 변수가 되므로 value 대신에 어떤 이름이든지 상관 없음 field: 프로퍼티를 참조하는 변수로 보조 필드(backing field)로 불림 - 프로퍼티를 대신할 임시 필드로 만일 프로퍼.. 2023. 2. 22.
Kotlin #7 : 정보 은닉 캡슐화 (연관, 의존, 집합, 구성) 230220 ++ 캡슐화(encapsulation) ++ - 클래스를 작성할 때 외부에서 숨겨야 하는 속성이나 기능 - 가시성 지시자(visibility modifiers)를 통해 외부 접근 범위를 결정할 수 있음 private: 이 지시자가 붙은 요소는 외부에서 접근할 수 없음 public: 이 요소는 어디서든 접근이 가능 (기본값) protected: 외부에서 접근할 수 없으나 하위 상속 요소에서는 가능 internal: 같은 정의의 모듈 내부에서는 접근이 가능 접근 제한자 최상위에서 사용할 때 클래스 멤버에서 사용할 때 public 모든 파일에서 가능 모든 클래스에서 가능 internal 같은 모듈 내에서 가능 같은 모듈 내에서 가능 protected 사용 불가 상속 관계의 하위 클래스에서만 가능 private.. 2023. 2. 20.
Kotlin #6 : 상속과 클래스 230217 ++ 상속(inheritance) ++ - 자식 클래스를 만들 때 상위 클래스(부모 클래스)의 속성과 기능을 물려받아 계승 - 상위(부모) 클래스의 프로퍼티와 메서드가 자식에 적용됨 - open 키워드를 통한 선언 open class 기반 클래스명 { // open으로 파생 가능 (다른 클래스가 상속 가능한 상태가 됨) ... } class 파생 클래스명 : 기반 클래스명() { // 기반 클래스로부터 상속, 최종 클래스로 파생 불가 ... } ** 코틀린의 모든 클래스는 묵시적으로 Any로부터 상속 (자바에서의 Object가 코틀린의 Any라고 생각하면 된다.) super(...) : 상위클래스 생성자 호출 ++ 다형성(polymorphism) ++ - 같은 이름을 사용하지만 구현 내용이 다르거나 매개.. 2023. 2. 20.
Kotlin #5 : 객체지향 프로그래밍 230216 Class 분류, 범주 Property 속성(Attribute), 변수(Variable), 필드(Field), 데이터(Data) Method 함수(Function), 동작(Operation), 행동(Behavior) Object 인스턴스(Instance) - 자바에서 사용하는 필드는 코틀린에서 프로퍼티로 부른다. ++ 클래스 선언 ++ - 클래스는 class 키워드로 선언 - 클래스의 본문에 입력하는 내용이 없다면 { }를 생략 - 클래스의 멤버는 생성자, 변수, 함수, 클래스로 구성 - 생성자는 constructor라는 키워드로 선언하는 함수 - 코틀린에서 class는 public이 디폴트 class Bird { // 프로퍼티... // 메서드... } - 객체를 생성해 사용하며 객체로 클래스의 멤버에.. 2023. 2. 17.
Kotlin #4 : 예외처리 230216 ++ 예외(exception) ++ - 실행 도중의 잠재적인 오류까지 검사할 수 없음 -> 실행되다가 비정상적으로 프로그램이 종료되는 경우 - 운영체제의 문제 (잘못된 시스템 호출의 문제) - 입력값의 문제 (존재하지 않는 파일 혹은, 숫자 입력란에 문자 입력 등) - 받아들일 수 없는 연산 (0으로 나누기 등) - 메모리의 할당 실패 및 부족 - 컴퓨터 기계 자체의 문제 (전원 문제, 망가진 기억 장치 등) try { 예외 발생 가능성 있는 문장 } catch (e: 예외처리 클래스명) { 예외를 처리하기 위한 문장 } finally { 반드시 실행되어야 하는 문장 } - ArithmeticException : 산술과 관련된 Exception - 스택의 추적 : e.printStackTrace() ->.. 2023. 2. 16.
Kotlin #3 : 기본 연산자, 비트 연산자, 변수와 함수, 반복문, 조건문, 람다식 230213 ++ 기본 연산자 ++ - 산술, 대입, 증가, 감소, 비교, 논리 연산자... - 산술 연산자 operator description example + 덧셈 1+2 - 뺄셈 2-1 * 곱셈 3*5 / 나눗셈 10/3 % 나머지(Modulus) 10%3 - 대입 연산자 operator description example = 오른쪽 항의 내용을 왼쪽 항에 대입 num = 2 += 두 항을 더한 후 왼쪽 항에 대입 num += 2 -= 왼쪽 항을 오른쪽 항으로 뺀 후 왼쪽 항에 대입 num -=2 *= 두 항을 곱한 후 왼쪽 항에 대입 num *=2 /= 왼쪽 항을 오른쪽 항으로 나눈 후 왼쪽 항에 대입 num /= 2 %= 왼쪽 항을 오른쪽 항으로 나머지 연산 후 왼쪽 항에 대입 num %= 2 - 증감 연.. 2023. 2. 15.