전체 글
-
[Kotlin] by 키워드Kotlin/늦은 초기화 2021. 9. 3. 16:23
1. by를 통한 클래스의 인터페이스 구현을 다른 객체에게 위임 interface A {...} class B : A {...} class C(b : B) : A by b {...} 클래스 C는 인터페이스 A를 구현한다. 클래스 C의 인터페이스 A 구현은 b객체(B클래스)가 A를 구현한 방식으로 구현된다. 클래스 C의 인터페이스 A 구현을 b객체에게 위임한다. 인터페이스의 메서드의 경우 interface Soundable { fun sound() } class Dog : Soundable { override fun sound() { println("멍멍") } } class MyDog(dog: Dog) : Soundable by dog { } fun main() { val dog = Dog() val m..
-
Delegation Pattern 위임 패턴Design Pattern 2021. 9. 3. 13:55
위임이란 행동(권한이나 일처리 등)을 다른 객체에게 맡기는 것 위탁자: 객체1 ->(위임)-> 수탁자: 객체2 객체1의 모든 행동을 객체2가 대신할 수 있도록 위임 나의 일처리를 친구에게 위임 친구가 나의 일처리를 대신함 package com.test.kotlinpractice.delegation interface WorkList{ //작업 리스트 fun water() fun repair() fun buyParts() } class Me():WorkList{ //나의 작업 리스트 override fun water(){ println("Me의 화분에 물을 주는중") } override fun repair(){ println("Me의 의자를 고치는중") } override fun buyParts() { pr..
-
[Java] 내부 클래스java/Class.Interface.Method 2021. 8. 29. 14:46
코틀린 내부 클래스 https://hellose7.tistory.com/119 [kotlin] Nested Class [Java/Nested Class] - [Java] 내부 클래스 [Java] 내부 클래스 non-static 내부 클래스 인스턴스 생성법 반드시 외부 클래스 인스턴스를 통해 인스턴스를 생성해야한다. class Outer { class Inner { } } public.. hellose7.tistory.com 내부 클래스란 클래스 안에 선언된 클래스를 의미한다. 보통 non-static 내부 클래스를 Inner 클래스라고 부르고, static 내부 클래스를 static nested 클래스라고 부른다. non-static 내부 클래스 인스턴스 생성법 반드시 외부 클래스 인스턴스를 통해 인스턴..
-
[Java] 익명 클래스java/Class.Interface.Method 2021. 8. 28. 14:54
-익명 클래스란 class A 를 상속받아 어떠한 기능을 하는 class B를 만들어야 한다고 가정하자. class B extends A로 클래스 B를 선언한 뒤에 new B를 통해 객체를 생성한다. 만약 프로그램에서 클래스 B는 현재 한번만 사용되고 차후에 사용될 필요가 없다면?? 클래스로 선언해 놓을 필요가 없을 것이다. 익명 클래스는 기존의 방식처럼 클래스를 선언하지 않고 코드상에서 한번쓰는 방식으로 선언할 수 있다. 또한 이름을 가지지 않는다. 익명 클래스는 인터페이스 하나만 구현하거나, 클래스 하나만 상속받을 수 있다. 여러 인터페이스 동시에 구현 불가 인터페이스 구현, 클래스 상속이 동시에 불가 하나를 상속받거나, 구현해야하기 때문에 아무것도 상속받지 않거나, 아무것도 구현하지 않은 마음대로 ..
-
[Kotlin] Collection hierachyKotlin/Collection 2021. 8. 26. 14:45
read-only interface (Mutable이 붙지 않은 것들)- element의 값을 변경 불가 mutable interface (Mutable이 붙은 것들)- element의 값을 변경 가능( 삭제,변경,추가) interface Iterable Classes that inherit from this interface can be represented as a sequence of elements that can be iterated over. https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-iterable/ interface Collection : Iterable A generic collection of elements. M..
-
[Kotlin] Extension (Function,Property)Kotlin/Function 2021. 8. 16. 18:23
Extension Function 개인참고용 확장 함수 1. fun 클래스명.확장함수명(파라메터...): 리턴타입{ 구현 } nullable한 인스턴스도 받을 수 있는 확장함수의 선언 fun 클래스명?.확장함수명(파라메터들): 리턴타입{ 구현 } 2. 조상,자손간의 메서드 오버라이딩시 호출되는 메서드와 다름 참조변수에 담긴 실제 인스턴스의 메서드가 호출되지 않고 참조변수의 타입에 해당하는 메서드가 호출됨 3. 확장함수의 시그니쳐에 해당하는 함수가 클래스의 멤버 메서드로 이미 존재하는 경우 선언한 확장함수가 아닌 멤버 메서드가 호출됨 다른 시그니쳐로 오버로딩에 해당하는 확장함수를 정의가능 4. Extension Function의 선언은 Top-level에서 하므로 패키지에 소속 접근제한자가 어떻게 설정되냐..
-
[Kotlin] object, companion objectKotlin/Class and objects 2021. 8. 16. 15:44
1. object - object expression 오브젝트 표현식은 명시적으로 class 선언을 하지 않은 채로 익명 클래스의 오브젝트를 만든다. 이러한 인스턴스들은 클래스 이름이 아닌, 표현식으로 정의되기 때문에 anonymous object라고 불린다. 일회성에 적합 클래스 바디 구조처럼 선언하고 앞에 =으로 표현식으로 정의 object expressions은 Any를 상속받는다. !!object에는 생성자가 허용되지 않는다. //공부 필요 Using anonymous objects as return and value types https://kotlinlang.org/docs/object-declarations.html#using-anonymous-objects-as-return-and-valu..
-
[Kotlin] Nothing, UnitKotlin/Types 2021. 8. 16. 15:28
인터넷의 여러 글들을 읽어봤지만 Nothing과 Unit의 차이에 대해 정확하게는 모르겠고 어떠한 식으로만 써야하는지에 대해서만 안것 같다. 이해를 위해 글의 순서가 뒤죽박죽일 수 있다. Any는 모든 타입의 조상 타입 Nothing은 모든 타입의 서브 타입 Unit은 싱글톤 인스턴스로 자바의 void를 나타낸다. 함수가 리턴되지 않을 경우 Unit대신 Nothing을 쓰자. Nothing은 모든 타입의 서브 타입 fun test(): 조상타입{ return 자손인스턴스 } 자손인스턴스는 조상타입으로 캐스팅 가능하기 때문에 컴파일 에러가 발생하지 않는다. 마찬가지로 코틀린에서 throw 표현식은 Nothing타입이다. Nothing은 모든 타입의 서브타입이기 때문에 어떠한 타입으로도 캐스팅 될 수 있다...