kotlin-이론(19)
-
[kotlin] Object Declarations
Object Declarations 객체선언 용도 1. 싱글턴을 사용하기 위해 2. Object Expression을 이용해서 만들 수 있음 사용 문법 1. object 키워드 뒤에 항상 이름이 있어야한다. 2. object Expression이 아니기 때문에 변수에 바로 대입할 수 없다. 3. 여러개의 클래스나 인터페이스를 상속 혹은 구현할 수 있다. 예시) 출력)123 Companion Object(동반자) object declaration은 companion 키워드를 붙일 수 있다. 붙여주면 Companion 기능을 사용할 수 있다. 참고. 이름은 써도되고 안써도 된다. 그리고 원래 같았으면 호출할 때 MyClass.object이름.함수명 이런식으로 사용할 수 있다. Myclass.create() ..
2018.06.18 -
[kotlin]Object Expression
Object Expression and Declarations Object의 용도 - 어떤 클래스에서 조금 변형된 객체를 생성할 때 - 새로운 subclass의 명시적인 선언 없이 객체생성 Object Expression -Java의 익명객체와 같은 역활을 한다. object:Runnable을 쓰는 순간 바로 객체가 생성되는 것이고 변수에도 집어 넣을 수 있다. object Expression이 없을 때는 클래스를 만들어서 사용했지만 하지만 object Expression을 사용하면 클래스의 생성없이 아래와 같이 사용할 수 있다. 그리고 여기서 람다식을 사용해주면 훨씬 간단하게 사용할 수 있다. 그리고 꼭 상속을 받을 필요는 없다. 객체명.a 객체명.b와 같이 접근할 수 있다. Object Express..
2018.06.18 -
[kotlin] Nested Class And Inner Class
Nested Class And Inner Class Nested Class(중첩 클래스) 중첩 클래스는 클래스안에 한개의 클래스를 또 선언하는 것을 말한다. fun main(args: Array) { println(OuterClass.InnerClass().foo()) } class OuterClass{ var bar:Int = 2 class InnerClass{ fun foo() = 2 } }이와 같이 사용할 수 있는데 덮고 있는 클래스의 멤버에는 도달 할 수 없는 것 같다. 따로 값을 전해주고 싶다면 생성자를 통해 전해주어야 한다. Inner Class(내부 클래스) 내부 클래스는 클래스안에 한개의 클래스를 또 선언하는 것을 말한다. 하지만 위와 달리 덮고 있는 클래스의 멤버 변수에 접근할 수 있다...
2018.06.18 -
[kotlin]Data Class
Data Class Data Class데이터 클래스란 클래스가 data를 보유하면서 아무것도 하지 않는 클래스이다. 사용법 data class User(var name:String, var age:Int) 하지만 데이터 클래스는 데이터를 조금 더 편하게 사용하라고 컴파일러가 컴파일 할 때 equals()hashCode()copy()toString()componentsN() 등의 함수를 제공해주고 있다. 명시적으로 제공해주는 경우에는 컴파일러가 자동으로 생성해주지 않는다. 좋은 데이터 클래스의 조건기본 생성자에 1개 이상의 파라메터 기본 생성자의 파라미터가 var, val로 생성 Data Class는 abstract, open, sealed, Inner를 사용하지 못함 코틀린 1.1버전 이후에 바뀐 dat..
2018.06.18 -
[kotlin] kotlin 강의 properties2
kotlin 강의 properties2 프로퍼티의 가시성의 변경이나 어노테이션이 필요한 경우 기본 accessor의 수정 없이 body없는 accessor를 통해 정의가능 var abc:String = "asdg" private set var seet:String = "abcd" @Logger get 위와 같은 방법으로 바꾸어 줄 수 있다. body를 작성해도 상관 없다. Backing Field setter와 getter에 단순히 field라는 변수를 사용하는 경우를 본적이 있을 것이다. 이것은 setter와 getter내에서만 사용한 특별한 변수인데. 사실상 이 setter와 getter를 사용하는 객체가 field인 것 이다. 하지만 이필드를 사용하기 위해서는 몇가지 조건이 있는데 알아보자!!! 1..
2018.06.17 -
[kotlin] kotlin 강의 properties1
kotlin 강의 properties properties 코틀린 클래스는 프로퍼티를 가질 수 있음 사용은 자바의 필드를 사용하듯이 하면 됨 프로퍼티 문법 - 전체문법var [:][=][][] [] -생략가능 예제 fun main(args: Array) { var obj = Address() println(obj.name) } class Address{ val name = "Kotlin" } 이코드를 바이트코드로 바꿔 자바 파일로 바꿔 보면 public final class TestKt { public static final void main(@NotNull String[] args) { Intrinsics.checkParameterIsNotNull(args, "args"); Address obj = ne..
2018.06.16