분류 전체보기 (438) 썸네일형 리스트형 [Kotlin] in/out kotlin에서는 명시적으로 super/extends 대신 in/out 키워드를 제공하는데, 각각의 정의와 매칭은 아래와 같습니다. T : 별도의 Wildcard 정의가 없이 read/write 모두 가능 in T : Java의 ? super T와 같음. input의 약자이며 write 만 가능 out T : Java의 ? extends T와 같음. output의 약자이며 read 만 가능 Kotlin - out : ? extends T (java) private fun printAll(items: ArrayList) { items.indices .filter { items[it].isArgument("") } .forEach { println("item : " + items[it]) } } 위의 예제의.. [Kotlin] operator 연산자 오버로딩을 구현하기 위해서는 operator 라는 키워드를 이용합니다. 그리고 코틀린에 이미 정해져 있는 함수를 새롭게 정의하면 됩니다. public final operator fun next(): kotlin.Boolean { } [OOP] 추상클래스와 인터페이스 추상 클래스(Abstract Class) 추상 메서드를 가지며, Abstract로 선언된 클래스. 최소 한 개의 추상메소드를 포함하는 경우 반드시 추상 클래스로 선언해야 함 추상 메소드가 하나라도 없을 때 Abstract로 선언한 클래스. 추상 클래스는 온전한 클래스가 아니기 때문에 인스턴스 생성 불가 상속과 구현 서브 클래스에서 슈퍼 클래스의 추상 메소드를 구현(오버라이딩) 슈퍼 클래스의 추상 메서드를 구현한 서브 클래스는 추상 클래스가 아님 추상 클래스를 상속 후 추상 메서드를 구현(오버라이딩)하지 않으면 추상 클래스가 됨(서브 클래스도 Abstract로 선언) [목적] 상속을 위한 슈퍼 클래스로 활용하기 위한 것 추상 메소드를 통해 서브 클래스가 구현할 메소드의 원형을 알려주는 인터페이스의 역항르 .. [Kotlin] annotation class [Annotation] 메타데이터 ( 부가기능 )을 코드에 비침투적으로 추가할 수 있는 수단 멤버 변수, 함수, 클래스 등 다양한 곳에 위치 시킬 수 있으며 또한 다양한 기능을 가진 다양한 어노테이션이 있음 [기본적인 선언 및 사용방법] 아래 코드는 Test이라는 어노테이션을 제작한 것이며 @Test으로 사용할 수 있습니다. 여기에 기능을 추가하기 위해서는 AOP를 이용할 수도 있으며 reflection을 이용하여 Annotation을 체크 후 기능을 만들어 줄 수도 있습니다. annotation class Test [추가 속성] 추가 속성은 어노테이션 위에 또 다른 어노테이션을 달아주는 것입니다. 추가 속성의 대표적인 예는 아래와 같습니다. @Target : 어노테이션을 달 수 있는 구성 요소 선정 타.. [OOP] 접근지정자(Access Specifier) 접근지정자(Access Specifier) : 클래스나 멤버들을 다른 클래스에서 접근해도 되는지 여부를 선언하는 것 Java public 패키지와 상관없이 모든 클래스들이 접근 가능한 것 슈퍼 클래스의 public 멤버 : 서브 클래스는 항상 접근 가능 protected 다른 패키지 내 클래스 접근 대신 부모와 자식 간에만 공유가 가능하고, 메인클래스에서 다른 패키지의 변수에 직접 접근하는 것은 불가능함 슈퍼클래스의 protected 멤버 : 같은 패키지 내의 모든 클래스 접근 허용. 패키지 여부와 상관없이 서브클래스는 접근 가능 default 슈퍼클래스의 default 멤버 : 서브 클래스가 동일한 패키지에 있을 때, 접근 가능 private 클래스 내의 멤버에게만 접근이 허용되는 것 슈퍼 클래스의 p.. [Kotlin] enum class enum 열거형 클래스 쓰는 이유 : 코드 간결, 가독성, 인스턴스 생성과 상속 방지, 상수값의 타입 안정성 보장 열거형 클래스는 인터페이스를 구현할 수 있습니다 (하지만 클래스에서 파생될 수 없음), 모든 항목에 대한 인터페이스 멤버들의 공통 구현을 제공하거나, 익명의 클래스 내의 각 항목에 대해 별도의 구현을 제공합니다. 당신이 구현하기 원하는 인터페이스들을 열거형 클래스 선언에 다음과 같이 추가함으로써 완료됩니다. enum class 클래스명 : BinaryOperator, IntBinaryOperator { PLUS { override fun apply(t: Int, u: Int): Int = t + u }, TIMES { override fun apply(t: Int, u: Int): Int =.. [Java, Kotlin] final / open final 해당 클래스의 상속을 금지시킴 [Java] final Class : 더 이상 상속되지 않음. final이 없으면 모두 다른 클래스에서 상속 가능 final Method : 더 이상 오버라이딩 될 수 없음 final Field : 상수로서, 실행 중에 값을 변경할 수 없음 [Kotlin] 코틀린에서의 클래스와 메서드는 기본적으로 final임 open open Class : 상속 허용 open Method : 오버라이드 허용 프로퍼티의 앞에도 open 변경자를 붙여야 함 open class Parent { // 하위 클래스에서 override 불가능 fun method1(): Int { return 4 } // 하위 클래스에서 override 가능 open fun method2() :Boolean.. [Java, Kotlin] 생성자 생성자란? 객체가 생성되는 순간에 자동으로 호출되며 객체에 필요한 초기화를 수행하는 코드 생성자의 이름과 클래스의 이름은 동일해야 함 기본생성자 : 매개변수가 없고 실행코드가 없는 생성자 this() 클래스 내에서 생성자가 다른 생성자를 호출할 때 사용하는 메소드(코드) 반드시 생성자의 첫 번째 문장으로 사용되어야 한다. 객체가 생성되는 순간에 자동으로 호출되며 객체에 필요한 초기화를 수행함 한 클래스에서 매개변수가 다른 것이 여러개 작성할 수 있음 리턴 타입이 없음 클래스에 생성자가 하나도 선언되어 있지 않을 경우, 오류가 발생하지 않음 Java //클래스 - 생성자 class ClassName{ int a; ClassName(){ //기본생성자. 클래스의 이름과 같아야 함. 다른 생성자가 없을 때만 .. 이전 1 ··· 25 26 27 28 29 30 31 ··· 55 다음