본문 바로가기
728x90

Mobile/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.. 2023. 2. 24.
[Kotlin] #10 : 내부 클래스, 연산자 230223 코틀린 내부 클래스중첩(Nested)클래스이너(Inner)클래스종류역할정적 클래스(static class)static 키워드를 가지며 외부 클래스를 인스턴스화 하지않고 바로 사용 가능한 클래스(주로 빌더 클래스에 이용)중첩 클래스(nested class): 객체 생성 없이 사용 가능멤버 클래스(member class)인스턴스 클래스로도 불리며 외부 클래스의 필드나 메서드와 연동하는 내부 클래스이너 클래스(inner class): 필드나 메서드와 연동하는 내부 클래스로 inner 키워드가 필요지역 클래스(local class) 초기화 블록이나 메서드 내의 블록에서만 유효한 클래스지역 클래스(local class): 클래스의 선언이 블록에 있다면 지역 클래스익명 클래스(anonymous class) 이름이 .. 2023. 2. 23.
[Kotlin] #9 : 객체, 데이터 클래스, Companion 객체, object, singleton, 추상 클래스, 인터페이스 230222 자바에서 코틀린 Companion 객체 사용@JvmStatic- 자바에서는 코틀린의 컴패니언 객체를 접근하기 위해 @JvmStatic 애노테이션(annotation) 표기법을 사용 1.package com.example.pp192class 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 st.. 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 ++ 기본 연산자 ++- 산술, 대입, 증가, 감소, 비교, 논리 연산자... - 산술 연산자operatordescriptionexample+덧셈1+2-뺄셈2-1*곱셈3*5/나눗셈10/3%나머지(Modulus)10%3 - 대입 연산자operatordescriptionexample=오른쪽 항의 내용을 왼쪽 항에 대입num = 2+=두 항을 더한 후 왼쪽 항에 대입num += 2-=왼쪽 항을 오른쪽 항으로 뺀 후 왼쪽 항에 대입num -=2*=두 항을 곱한 후 왼쪽 항에 대입num *=2/=왼쪽 항을 오른쪽 항으로 나눈 후 왼쪽 항에 대입num /= 2%=왼쪽 항을 오른쪽 항으로 나머지 연산 후 왼쪽 항에 대입num %= 2 - 증감 연산자operatordescriptionexample++항의 값에 1 증가.. 2023. 2. 15.
728x90